annotate bio/search_indexes.py @ 697:67f8d49a9377

Cleaned up the code a bit. Separated the S3 stuff out into its own class. This class maybe should be in core. Still want to do some kind of context manager around the temporary file we are creating to ensure it gets deleted.
author Brian Neal <bgneal@gmail.com>
date Sun, 08 Sep 2013 21:02:58 -0500
parents ee87ea74d46b
children ad53d929281a
rev   line source
bgneal@223 1 """Haystack search index for the bio application."""
bgneal@223 2 from haystack.indexes import *
bgneal@223 3 from haystack import site
bgneal@469 4 from custom_search.indexes import CondQueuedSearchIndex
bgneal@223 5
bgneal@223 6 from bio.models import UserProfile
bgneal@471 7 from bio.signals import profile_content_update
bgneal@223 8
bgneal@223 9
bgneal@467 10 class UserProfileIndex(CondQueuedSearchIndex):
bgneal@223 11 text = CharField(document=True, use_template=True)
bgneal@223 12 author = CharField(model_attr='user')
bgneal@223 13
bgneal@533 14 def index_queryset(self):
bgneal@223 15 return UserProfile.objects.filter(user__is_active=True)
bgneal@223 16
bgneal@277 17 def get_updated_field(self):
bgneal@277 18 return 'update_date'
bgneal@277 19
bgneal@471 20 def _setup_save(self, model):
bgneal@471 21 profile_content_update.connect(self.enqueue_save)
bgneal@471 22
bgneal@471 23 def _teardown_save(self, model):
bgneal@471 24 profile_content_update.disconnect(self.enqueue_save)
bgneal@471 25
bgneal@471 26 def enqueue_save(self, sender, **kwargs):
bgneal@471 27 return self.enqueue('update', sender)
bgneal@471 28
bgneal@223 29
bgneal@223 30 site.register(UserProfile, UserProfileIndex)