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