Commit d8b178009f2a4c1183327eb2c754fa9d41753752

Authored by Luan
1 parent b1ead9be

Changing super_archives search index to index thread instead of messages

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