diff -r 15b685295349 -r 5a8702a8adf0 src/ldt/ldt/indexation/search_indexes.py --- 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)