diff custom_search/indexes.py @ 677:858ce870c854

For #47, create custom search index for models with is_public.
author Brian Neal <bgneal@gmail.com>
date Wed, 14 Aug 2013 13:56:43 -0500
parents ee87ea74d46b
children
line wrap: on
line diff
--- a/custom_search/indexes.py	Sat Aug 03 22:14:04 2013 -0500
+++ b/custom_search/indexes.py	Wed Aug 14 13:56:43 2013 -0500
@@ -29,3 +29,21 @@
         if (action == 'update' and self.can_index(instance) or
                 action == 'delete'):
             super(CondQueuedSearchIndex, self).enqueue(action, instance)
+
+
+class PublicQueuedSearchIndex(QueuedSearchIndex):
+    """QueuedSearchIndex for models with is_public attributes."""
+
+    def enqueue(self, action, instance):
+        """Conditionally enqueue actions as follows.
+
+        For update actions: if is_public is True, enqueue the update. If
+        is_public is False, enqueue a delete action.
+
+        Delete actions are always enqueued.
+
+        """
+        if action == 'update' and instance.is_public:
+            super(PublicQueuedSearchIndex, self).enqueue(action, instance)
+        elif (action == 'update' and not instance.is_public) or action == 'delete':
+            super(PublicQueuedSearchIndex, self).enqueue('delete', instance)