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 | 2 | |
3 | 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 | 9 | # common fields |
10 | 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 | 19 | author_url = indexes.CharField(null=True) |
19 | 20 | type = indexes.CharField() |
20 | 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 | 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 | 28 | def get_model(self): |
28 | - return Message | |
29 | + return Thread | |
29 | 30 | |
30 | 31 | def get_updated_field(self): |
31 | 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 | 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 | 41 | return None |
37 | 42 | |
43 | + def prepare_created(self, obj): | |
44 | + return obj.message_set.first().received_time | |
45 | + | |
38 | 46 | def prepare_icon_name(self, obj): |
39 | 47 | return u'envelope' |
40 | 48 | |
41 | 49 | def prepare_type(self, obj): |
42 | 50 | return u'thread' |
43 | 51 | |
44 | - def prepare_url(self, obj): | |
45 | - return u'{}#msg-{}'.format(obj.url, obj.pk) | |
46 | - | |
47 | 52 | def index_queryset(self, using=None): |
48 | 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 | -{{ 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 @@ |
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 @@ |
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 %} | ... | ... |