diff gpp/bio/search_indexes.py @ 471:d83296cac940

For #227: only enqueue user profiles if the user has changed the content we have in the search index.
author Brian Neal <bgneal@gmail.com>
date Wed, 17 Aug 2011 02:02:20 +0000
parents 3b30286adba5
children 387d46abcb95
line wrap: on
line diff
--- a/gpp/bio/search_indexes.py	Wed Aug 17 01:29:27 2011 +0000
+++ b/gpp/bio/search_indexes.py	Wed Aug 17 02:02:20 2011 +0000
@@ -4,6 +4,7 @@
 from custom_search.indexes import CondQueuedSearchIndex
 
 from bio.models import UserProfile
+from bio.signals import profile_content_update
 
 
 class UserProfileIndex(CondQueuedSearchIndex):
@@ -16,6 +17,15 @@
     def get_updated_field(self):
         return 'update_date'
 
+    def _setup_save(self, model):
+        profile_content_update.connect(self.enqueue_save)
+
+    def _teardown_save(self, model):
+        profile_content_update.disconnect(self.enqueue_save)
+
+    def enqueue_save(self, sender, **kwargs):
+        return self.enqueue('update', sender)
+
     def can_index(self, instance):
         return instance.user.is_active