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 %} |