Commit d8b178009f2a4c1183327eb2c754fa9d41753752
1 parent
b1ead9be
Exists in
master
and in
39 other branches
Changing super_archives search index to index thread instead of messages
Showing
4 changed files
with
54 additions
and
28 deletions
Show diff stats
src/super_archives/search_indexes.py
| @@ -2,49 +2,54 @@ | @@ -2,49 +2,54 @@ | ||
| 2 | 2 | ||
| 3 | from haystack import indexes | 3 | from haystack import indexes |
| 4 | 4 | ||
| 5 | -from .models import Message | 5 | +from .models import Thread |
| 6 | 6 | ||
| 7 | 7 | ||
| 8 | -class MessageIndex(indexes.SearchIndex, indexes.Indexable): | 8 | +class ThreadIndex(indexes.SearchIndex, indexes.Indexable): |
| 9 | # common fields | 9 | # common fields |
| 10 | text = indexes.CharField(document=True, use_template=True) | 10 | text = indexes.CharField(document=True, use_template=True) |
| 11 | - url = indexes.CharField(null=True) | ||
| 12 | - title = indexes.CharField(model_attr='subject_clean') | ||
| 13 | - description = indexes.CharField(model_attr='body') | ||
| 14 | - modified = indexes.DateTimeField(model_attr='received_time') | ||
| 15 | - author = indexes.CharField( | ||
| 16 | - model_attr='from_address__get_full_name', null=True | 11 | + url = indexes.CharField(model_attr='get_absolute_url', null=True) |
| 12 | + title = indexes.CharField(model_attr='latest_message__subject_clean') | ||
| 13 | + description = indexes.CharField(use_template=True) | ||
| 14 | + created = indexes.DateTimeField() | ||
| 15 | + modified = indexes.DateTimeField( | ||
| 16 | + model_attr='latest_message__received_time' | ||
| 17 | ) | 17 | ) |
| 18 | + author = indexes.CharField(null=True) | ||
| 18 | author_url = indexes.CharField(null=True) | 19 | author_url = indexes.CharField(null=True) |
| 19 | type = indexes.CharField() | 20 | type = indexes.CharField() |
| 20 | icon_name = indexes.CharField() | 21 | icon_name = indexes.CharField() |
| 21 | - tag = indexes.CharField(model_attr='thread__mailinglist__name') | 22 | + tag = indexes.CharField(model_attr='mailinglist__name') |
| 22 | 23 | ||
| 23 | mailinglist_url = indexes.CharField( | 24 | mailinglist_url = indexes.CharField( |
| 24 | - model_attr='thread__mailinglist__get_absolute_url' | 25 | + model_attr='mailinglist__get_absolute_url' |
| 25 | ) | 26 | ) |
| 26 | 27 | ||
| 27 | def get_model(self): | 28 | def get_model(self): |
| 28 | - return Message | 29 | + return Thread |
| 29 | 30 | ||
| 30 | def get_updated_field(self): | 31 | def get_updated_field(self): |
| 31 | return 'received_time' | 32 | return 'received_time' |
| 32 | 33 | ||
| 34 | + def prepare_author(self, obj): | ||
| 35 | + return obj.message_set.first().from_address.get_full_name() | ||
| 36 | + | ||
| 33 | def prepare_author_url(self, obj): | 37 | def prepare_author_url(self, obj): |
| 34 | - if obj.from_address.user: | ||
| 35 | - return obj.from_address.user.get_absolute_url() | 38 | + first_message = obj.message_set.first() |
| 39 | + if first_message.from_address.user: | ||
| 40 | + return first_message.from_address.user.get_absolute_url() | ||
| 36 | return None | 41 | return None |
| 37 | 42 | ||
| 43 | + def prepare_created(self, obj): | ||
| 44 | + return obj.message_set.first().received_time | ||
| 45 | + | ||
| 38 | def prepare_icon_name(self, obj): | 46 | def prepare_icon_name(self, obj): |
| 39 | return u'envelope' | 47 | return u'envelope' |
| 40 | 48 | ||
| 41 | def prepare_type(self, obj): | 49 | def prepare_type(self, obj): |
| 42 | return u'thread' | 50 | return u'thread' |
| 43 | 51 | ||
| 44 | - def prepare_url(self, obj): | ||
| 45 | - return u'{}#msg-{}'.format(obj.url, obj.pk) | ||
| 46 | - | ||
| 47 | def index_queryset(self, using=None): | 52 | def index_queryset(self, using=None): |
| 48 | return self.get_model().objects.filter( | 53 | return self.get_model().objects.filter( |
| 49 | - thread__spam=False, spam=False | ||
| 50 | - ).exclude(thread__subject_token='') | 54 | + spam=False |
| 55 | + ).exclude(subject_token='') |
src/super_archives/templates/search/indexes/super_archives/message_text.txt
| @@ -1,10 +0,0 @@ | @@ -1,10 +0,0 @@ | ||
| 1 | -{{ object.thread.mailinglist.name }} | ||
| 2 | -{{ object.thread.mailinglist.name|slugify }} | ||
| 3 | -{{ object.thread.subject_token }} | ||
| 4 | - | ||
| 5 | -{{ object.body }} | ||
| 6 | -{{ object.body|slugify }} | ||
| 7 | -{{ object.subject_clean }} | ||
| 8 | -{{ object.subject_clean|slugify }} | ||
| 9 | - | ||
| 10 | -{{ object.from_address.get_full_name }} |
src/super_archives/templates/search/indexes/super_archives/thread_description.txt
0 → 100644
| @@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
| 1 | +{% for message in object.message_set.iterator %} | ||
| 2 | + {% if not spam %} | ||
| 3 | + {{ message.subject_clean }} | ||
| 4 | + {{ message.subject_clean|slugify }} | ||
| 5 | + {{ message.body }} | ||
| 6 | + {{ message.body|slugify }} | ||
| 7 | + {{ message.from_address.get_full_name }} | ||
| 8 | + {{ message.from_address.get_full_name|slugify }} | ||
| 9 | + {% endif %} | ||
| 10 | +{% endfor %} |
src/super_archives/templates/search/indexes/super_archives/thread_text.txt
0 → 100644
| @@ -0,0 +1,21 @@ | @@ -0,0 +1,21 @@ | ||
| 1 | +{{ object.thread.mailinglist.name }} | ||
| 2 | +{{ object.thread.mailinglist.name|slugify }} | ||
| 3 | +{{ object.thread.subject_token }} | ||
| 4 | + | ||
| 5 | +{{ object.body }} | ||
| 6 | +{{ object.body|slugify }} | ||
| 7 | +{{ object.subject_clean }} | ||
| 8 | +{{ object.subject_clean|slugify }} | ||
| 9 | + | ||
| 10 | +{{ object.from_address.get_full_name }} | ||
| 11 | + | ||
| 12 | +{% for message in object.message_set.iterator %} | ||
| 13 | + {% if not spam %} | ||
| 14 | + {{ message.subject_clean }} | ||
| 15 | + {{ message.subject_clean|slugify }} | ||
| 16 | + {{ message.body }} | ||
| 17 | + {{ message.body|slugify }} | ||
| 18 | + {{ message.from_address.get_full_name }} | ||
| 19 | + {{ message.from_address.get_full_name|slugify }} | ||
| 20 | + {% endif %} | ||
| 21 | +{% endfor %} |