src/ldt/ldt/indexation/search_indexes.py
changeset 1304 e72664657829
parent 1302 d3358c7f5e0c
child 1357 dd3b4c9d5035
equal deleted inserted replaced
1303:b9621d9f059d 1304:e72664657829
    34             if obj.tag_list is not None:
    34             if obj.tag_list is not None:
    35                 obj.tags = None # To avoid a second and useless db request
    35                 obj.tags = None # To avoid a second and useless db request
    36                 return ",".join(obj.tag_list)
    36                 return ",".join(obj.tag_list)
    37         return ",".join([tag.name for tag in obj.tags.all()])
    37         return ",".join([tag.name for tag in obj.tags.all()])
    38     
    38     
       
    39     def index_queryset(self, using=None):
       
    40         "Used when the entire index for model is updated."
       
    41         return self.get_model().objects.prefetch_related("tags")
       
    42     
    39     
    43     
    40 class AnnotationIndex(indexes.SearchIndex, indexes.Indexable):
    44 class AnnotationIndex(indexes.SearchIndex, indexes.Indexable):
    41     text = indexes.CharField(document=True, use_template=True)
    45     text = indexes.CharField(document=True, use_template=True)
    42     tags = indexes.CharField(model_attr='tags', indexed=True, stored=False)
    46     tags = indexes.CharField(model_attr='tags', indexed=True, stored=False)
    43     title = indexes.CharField(model_attr='title', indexed=True, stored=True)
    47     title = indexes.CharField(model_attr='title', indexed=True, stored=True)
    48     def get_model(self):
    52     def get_model(self):
    49         return Annotation
    53         return Annotation
    50     
    54     
    51     def prepare_tags(self, obj):
    55     def prepare_tags(self, obj):
    52         return ",".join([tag.name for tag in obj.tags.all()])
    56         return ",".join([tag.name for tag in obj.tags.all()])
       
    57     
       
    58     def index_queryset(self, using=None):
       
    59         "Used when the entire index for model is updated."
       
    60         return self.get_model().objects.prefetch_related("tags")
    53 
    61 
    54 
    62 
    55 class ContentIndex(indexes.SearchIndex, indexes.Indexable):
    63 class ContentIndex(indexes.SearchIndex, indexes.Indexable):
    56     text = indexes.CharField(document=True, use_template=True)
    64     text = indexes.CharField(document=True, use_template=True)
    57     tags = indexes.CharField(model_attr='tags', indexed=True, stored=False, null=True)
    65     tags = indexes.CharField(model_attr='tags', indexed=True, stored=False, null=True)
    61     def get_model(self):
    69     def get_model(self):
    62         return Content
    70         return Content
    63     
    71     
    64     def prepare_tags(self, obj):
    72     def prepare_tags(self, obj):
    65         return ",".join([tag.name for tag in obj.tags.all()])
    73         return ",".join([tag.name for tag in obj.tags.all()])
       
    74     
       
    75     def index_queryset(self, using=None):
       
    76         "Used when the entire index for model is updated."
       
    77         return self.get_model().objects.prefetch_related("tags")