diff custom_search/indexes.py @ 581:ee87ea74d46b

For Django 1.4, rearranged project structure for new manage.py.
author Brian Neal <bgneal@gmail.com>
date Sat, 05 May 2012 17:10:48 -0500
parents gpp/custom_search/indexes.py@3b30286adba5
children 858ce870c854
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/custom_search/indexes.py	Sat May 05 17:10:48 2012 -0500
@@ -0,0 +1,31 @@
+"""
+This module contains custom search indexes to tailor the Haystack search
+application to our needs.
+
+"""
+from queued_search.indexes import QueuedSearchIndex
+
+
+class CondQueuedSearchIndex(QueuedSearchIndex):
+    """
+    This customized version of QueuedSearchIndex conditionally enqueues items
+    to be indexed by calling the can_index() method.
+
+    """
+    def can_index(self, instance):
+        """
+        The default is to index all instances. Override this method to
+        customize the behavior. This will be called on all update operations.
+
+        """
+        return True
+
+    def enqueue(self, action, instance):
+        """
+        This method enqueues the instance only if the can_index() method
+        returns True.
+
+        """
+        if (action == 'update' and self.can_index(instance) or
+                action == 'delete'):
+            super(CondQueuedSearchIndex, self).enqueue(action, instance)