Files
fet2020/fet2020/posts/search_indexes.py
2025-02-02 12:42:20 +01:00

37 lines
1.1 KiB
Python

from haystack import indexes
from html2text import html2text
from .models import Post
class PostIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True)
title = indexes.EdgeNgramField(model_attr="title")
body = indexes.EdgeNgramField(model_attr="body", null=True)
status = indexes.CharField(model_attr="status")
date = indexes.DateField()
agenda = indexes.EdgeNgramField()
protocol = indexes.EdgeNgramField()
def get_model(self):
return Post
def index_queryset(self, using=None):
return self.get_model().objects.date_sorted(public=False)
def prepare_date(self, obj):
if obj.post_type == "N":
return obj.public_date
elif obj.post_type == "E" or obj.post_type == "F":
return obj.event_start.date()
def prepare_agenda(self, obj):
if obj.has_agenda and obj.agenda_html:
return html2text(obj.agenda_html)
return None
def prepare_protocol(self, obj):
if obj.has_protocol and obj.protocol_html:
return html2text(obj.protocol_html)
return None