--- /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