src/ldt/ldt/indexation/search_indexes.py
changeset 1484 5a8702a8adf0
parent 1477 1de00f96a047
child 1494 5e6295488e38
--- a/src/ldt/ldt/indexation/search_indexes.py	Sat Jan 21 01:26:42 2017 +0100
+++ b/src/ldt/ldt/indexation/search_indexes.py	Wed Jan 25 14:10:34 2017 +0100
@@ -40,6 +40,34 @@
         "Used when the entire index for model is updated."
         return self.get_model().objects.prefetch_related("tags")
 
+class ContentIndex(indexes.SearchIndex, indexes.Indexable):
+    text = indexes.CharField(document=True, use_template=True)
+    iri_id = indexes.CharField(model_attr='iri_id', indexed=False, stored=True)
+    tags = indexes.CharField(model_attr='get_tags', stored=True)
+    title = indexes.CharField(model_attr='title', stored=True)
+    description = indexes.CharField(model_attr='description', stored=True)
+    creation_date = indexes.DateTimeField(model_attr='creation_date', stored=True)
+    update_date = indexes.DateTimeField(model_attr='update_date', stored=True)
+    authors = indexes.CharField(model_attr="get_authors", stored=True)
+    duration = indexes.IntegerField(model_attr="duration", stored=True)
+    content_creation_date = indexes.DateTimeField(model_attr="content_creation_date", stored=True)
+
+
+    def get_model(self):
+        return Content
+
+    def prepare_tags(self, obj):
+        if hasattr(obj, 'tag_list'):
+            if obj.tag_list is not None:
+                obj.tags = None # To avoid a second and useless db request
+                return ",".join(obj.tag_list)
+        return ",".join([tag.name for tag in obj.tags.all()])
+
+    def index_queryset(self, using=None):
+        "Used when the entire index for model is updated."
+        return self.get_model().objects.prefetch_related("tags")
+
+
 
 class AnnotationIndex(indexes.SearchIndex, indexes.Indexable):
     text = indexes.CharField(document=True, use_template=True)