src/iconolab/search_indexes/signals.py
changeset 124 e5267573edd8
child 513 2d9c92c0d03a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iconolab/search_indexes/signals.py	Wed Aug 17 18:36:44 2016 +0200
@@ -0,0 +1,26 @@
+from iconolab.models import Image, AnnotationRevision, Annotation
+from haystack import signals
+from django.db import models
+from iconolab.signals.handlers import revision_created, revision_accepted
+import logging
+
+logger = logging.getLogger(__name__)
+
+# update / create new index when a new revision is accepted
+# Then update images tags related to this revision
+class RevisionSignalProcessor(signals.BaseSignalProcessor):
+	
+	def setup(self):
+		revision_created.connect(self.handle_revision, sender=AnnotationRevision)
+		revision_accepted.connect(self.handle_revision, sender=AnnotationRevision)
+
+	def handle_revision(self, **kwargs):
+		revision_instance = kwargs.get("instance", None)
+		if revision_instance and revision_instance.state in [AnnotationRevision.ACCEPTED]:
+			annotation = revision_instance.annotation
+			image_annotation = revision_instance.annotation.image
+			self.handle_save(Annotation, annotation) 
+			self.handle_save(Image, image_annotation)##useful for tag		
+
+	def teardown(self):
+		revision_accepted.disconnect(self.handle_accepted_revision, sender=AnnotationRevision)
\ No newline at end of file