annotate gpp/custom_search/indexes.py @ 552:9e42e6618168

For bitbucket issue #2, tweak the admin settings for the Post model to reduce slow queries. Define our own queryset() method so we can control the select_related(), and not have it cascade from post to topics to forums to categories. Removed 'topic' from list_display because MySQL still sucked with 2 inner joins. Now it seems to be tolerable with only one join to User.
author Brian Neal <bgneal@gmail.com>
date Wed, 25 Jan 2012 20:07:03 -0600
parents 3b30286adba5
children
rev   line source
bgneal@469 1 """
bgneal@469 2 This module contains custom search indexes to tailor the Haystack search
bgneal@469 3 application to our needs.
bgneal@469 4
bgneal@469 5 """
bgneal@469 6 from queued_search.indexes import QueuedSearchIndex
bgneal@469 7
bgneal@469 8
bgneal@469 9 class CondQueuedSearchIndex(QueuedSearchIndex):
bgneal@469 10 """
bgneal@469 11 This customized version of QueuedSearchIndex conditionally enqueues items
bgneal@469 12 to be indexed by calling the can_index() method.
bgneal@469 13
bgneal@469 14 """
bgneal@469 15 def can_index(self, instance):
bgneal@469 16 """
bgneal@469 17 The default is to index all instances. Override this method to
bgneal@469 18 customize the behavior. This will be called on all update operations.
bgneal@469 19
bgneal@469 20 """
bgneal@469 21 return True
bgneal@469 22
bgneal@469 23 def enqueue(self, action, instance):
bgneal@469 24 """
bgneal@469 25 This method enqueues the instance only if the can_index() method
bgneal@469 26 returns True.
bgneal@469 27
bgneal@469 28 """
bgneal@469 29 if (action == 'update' and self.can_index(instance) or
bgneal@469 30 action == 'delete'):
bgneal@469 31 super(CondQueuedSearchIndex, self).enqueue(action, instance)