annotate gpp/bio/search_indexes.py @ 505:a5d11471d031

Refactor the logic in the rate limiter decorator. Check to see if the request was ajax, as the ajax view always returns 200. Have to decode the JSON response to see if an error occurred or not.
author Brian Neal <bgneal@gmail.com>
date Sat, 03 Dec 2011 19:13:38 +0000
parents d83296cac940
children 387d46abcb95
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@223 14 def get_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@467 29 def can_index(self, instance):
bgneal@467 30 return instance.user.is_active
bgneal@467 31
bgneal@223 32
bgneal@223 33 site.register(UserProfile, UserProfileIndex)