Mercurial > public > sg101
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)