3 from haystack import indexes
5 from .models import Emission, Episode, NewsItem
8 class EmissionIndex(indexes.SearchIndex, indexes.Indexable):
9 title = indexes.CharField(model_attr='title', boost=1.5)
10 text = indexes.CharField(document=True, use_template=True)
11 categories = indexes.MultiValueField(faceted=True)
13 def prepare(self, obj):
14 data = super(EmissionIndex, self).prepare(obj)
21 def prepare_categories(self, obj):
22 return [category.title for category in obj.categories.all()]
25 class EpisodeIndex(indexes.SearchIndex, indexes.Indexable):
26 title = indexes.CharField(model_attr='title', boost=1.5)
27 text = indexes.CharField(document=True, use_template=True)
28 tags = indexes.MultiValueField(faceted=True)
33 def prepare_tags(self, obj):
34 return [tag.name for tag in obj.tags.all()]
37 class NewsItemIndex(indexes.SearchIndex, indexes.Indexable):
38 title = indexes.CharField(model_attr='title', boost=1.5)
39 text = indexes.CharField(document=True, use_template=True)
40 tags = indexes.MultiValueField(faceted=True)
42 def prepare(self, obj):
43 data = super(NewsItemIndex, self).prepare(obj)
44 today = datetime.datetime.today()
45 if obj.datetime < today - datetime.timedelta(weeks=15):
46 # push older news in later pages
48 elif obj.datetime > today - datetime.timedelta(weeks=3):
56 def prepare_tags(self, obj):
57 return [tag.name for tag in obj.tags.all()]