Mercurial > public > sg101
changeset 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 | afb17af7948f |
children | 38a198ea8c61 |
files | custom_search/indexes.py downloads/search_indexes.py weblinks/search_indexes.py |
diffstat | 3 files changed, 24 insertions(+), 12 deletions(-) [+] |
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)
--- a/downloads/search_indexes.py Sat Aug 03 22:14:04 2013 -0500 +++ b/downloads/search_indexes.py Wed Aug 14 13:56:43 2013 -0500 @@ -1,12 +1,12 @@ """Haystack search index for the downloads application.""" -from haystack.indexes import * +from haystack.indexes import CharField, DateTimeField from haystack import site -from custom_search.indexes import CondQueuedSearchIndex +from custom_search.indexes import PublicQueuedSearchIndex from downloads.models import Download -class DownloadIndex(CondQueuedSearchIndex): +class DownloadIndex(PublicQueuedSearchIndex): text = CharField(document=True, use_template=True) author = CharField(model_attr='user') pub_date = DateTimeField(model_attr='date_added') @@ -17,7 +17,4 @@ def get_updated_field(self): return 'update_date' - def can_index(self, instance): - return instance.is_public - site.register(Download, DownloadIndex)
--- a/weblinks/search_indexes.py Sat Aug 03 22:14:04 2013 -0500 +++ b/weblinks/search_indexes.py Wed Aug 14 13:56:43 2013 -0500 @@ -1,12 +1,12 @@ """Haystack search index for the weblinks application.""" -from haystack.indexes import * +from haystack.indexes import CharField, DateTimeField from haystack import site -from custom_search.indexes import CondQueuedSearchIndex +from custom_search.indexes import PublicQueuedSearchIndex from weblinks.models import Link -class LinkIndex(CondQueuedSearchIndex): +class LinkIndex(PublicQueuedSearchIndex): text = CharField(document=True, use_template=True) author = CharField(model_attr='user') pub_date = DateTimeField(model_attr='date_added') @@ -17,7 +17,4 @@ def get_updated_field(self): return 'update_date' - def can_index(self, instance): - return instance.is_public - site.register(Link, LinkIndex)