Commit 18dc62530955c38ca550c775b45dfd5e40f149f8

Authored by Luan
1 parent d7fab0e1

Changin search indexes to keep a few common field names

src/accounts/search_indexes.py
@@ -6,25 +6,37 @@ from .models import User @@ -6,25 +6,37 @@ from .models import User
6 6
7 7
8 class UserIndex(indexes.SearchIndex, indexes.Indexable): 8 class UserIndex(indexes.SearchIndex, indexes.Indexable):
  9 + # common fields
9 text = indexes.CharField(document=True, use_template=True) 10 text = indexes.CharField(document=True, use_template=True)
  11 + url = indexes.CharField(model_attr='get_absolute_url')
  12 + title = indexes.CharField(model_attr='get_full_name')
  13 + description = indexes.CharField(null=True)
  14 + type = indexes.CharField()
  15 + icon_name = indexes.CharField()
  16 +
  17 + # extra fields
10 username = indexes.CharField(model_attr='username') 18 username = indexes.CharField(model_attr='username')
11 name = indexes.CharField(model_attr='get_full_name') 19 name = indexes.CharField(model_attr='get_full_name')
12 email = indexes.CharField(model_attr='email') 20 email = indexes.CharField(model_attr='email')
13 institution = indexes.CharField(model_attr='institution', null=True) 21 institution = indexes.CharField(model_attr='institution', null=True)
14 role = indexes.CharField(model_attr='role', null=True) 22 role = indexes.CharField(model_attr='role', null=True)
15 - twitter = indexes.CharField(model_attr='twitter', null=True)  
16 - facebook = indexes.CharField(model_attr='facebook', null=True)  
17 google_talk = indexes.CharField(model_attr='google_talk', null=True) 23 google_talk = indexes.CharField(model_attr='google_talk', null=True)
18 webpage = indexes.CharField(model_attr='webpage', null=True) 24 webpage = indexes.CharField(model_attr='webpage', null=True)
19 25
20 - type = indexes.CharField()  
21 -  
22 def get_model(self): 26 def get_model(self):
23 return User 27 return User
24 28
25 def get_updated_field(self): 29 def get_updated_field(self):
26 return 'date_joined' 30 return 'date_joined'
27 31
  32 + def prepare_description(self, obj):
  33 + if obj.institution and obj.role:
  34 + return u'{} ({})'.format(obj.institution, obj.role)
  35 + return obj.institution if obj.institution else obj.role
  36 +
  37 + def prepare_icon_name(self, obj):
  38 + return u'user'
  39 +
28 def prepare_type(self, obj): 40 def prepare_type(self, obj):
29 return u'user' 41 return u'user'
30 42
src/proxy/search_indexes.py
@@ -9,17 +9,20 @@ from .models import Ticket, Wiki, Revision @@ -9,17 +9,20 @@ from .models import Ticket, Wiki, Revision
9 9
10 10
11 class WikiIndex(indexes.SearchIndex, indexes.Indexable): 11 class WikiIndex(indexes.SearchIndex, indexes.Indexable):
  12 + # common fields
12 text = indexes.CharField(document=True, use_template=True) 13 text = indexes.CharField(document=True, use_template=True)
13 - name = indexes.CharField(model_attr='name')  
14 - wiki_text = indexes.CharField(model_attr='wiki_text') 14 + url = indexes.CharField(model_attr='get_absolute_url')
  15 + title = indexes.CharField(model_attr='name')
  16 + description = indexes.CharField(model_attr='wiki_text', null=True)
15 author = indexes.CharField(null=True) 17 author = indexes.CharField(null=True)
16 author_url = indexes.CharField(null=True) 18 author_url = indexes.CharField(null=True)
17 - collaborators = indexes.CharField(model_attr='collaborators', null=True)  
18 created = indexes.DateTimeField(model_attr='created', null=True) 19 created = indexes.DateTimeField(model_attr='created', null=True)
19 modified = indexes.DateTimeField(model_attr='modified', null=True) 20 modified = indexes.DateTimeField(model_attr='modified', null=True)
20 -  
21 - url = indexes.CharField(model_attr='get_absolute_url')  
22 type = indexes.CharField() 21 type = indexes.CharField()
  22 + icon_name = indexes.CharField()
  23 +
  24 + # trac extra fields
  25 + collaborators = indexes.CharField(model_attr='collaborators', null=True)
23 26
24 def get_model(self): 27 def get_model(self):
25 return Wiki 28 return Wiki
@@ -39,29 +42,36 @@ class WikiIndex(indexes.SearchIndex, indexes.Indexable): @@ -39,29 +42,36 @@ class WikiIndex(indexes.SearchIndex, indexes.Indexable):
39 return author.get_absolute_url() 42 return author.get_absolute_url()
40 return None 43 return None
41 44
  45 + def prepare_icon_name(self, obj):
  46 + return u'file'
  47 +
42 def prepare_type(self, obj): 48 def prepare_type(self, obj):
43 return u'wiki' 49 return u'wiki'
44 50
45 51
46 class TicketIndex(indexes.SearchIndex, indexes.Indexable): 52 class TicketIndex(indexes.SearchIndex, indexes.Indexable):
  53 + # common fields
47 text = indexes.CharField(document=True, use_template=True) 54 text = indexes.CharField(document=True, use_template=True)
48 - summary = indexes.CharField(model_attr='summary', null=True) 55 + url = indexes.CharField(model_attr='get_absolute_url')
  56 + title = indexes.CharField()
49 description = indexes.CharField(model_attr='description', null=True) 57 description = indexes.CharField(model_attr='description', null=True)
  58 + author = indexes.CharField(null=True)
  59 + author_url = indexes.CharField(null=True)
  60 + created = indexes.DateTimeField(model_attr='created', null=True)
  61 + modified = indexes.DateTimeField(model_attr='modified', null=True)
  62 + type = indexes.CharField()
  63 + icon_name = indexes.CharField()
  64 + tag = indexes.CharField(model_attr='status', null=True)
  65 +
  66 + # trac extra fields
  67 + summary = indexes.CharField(model_attr='summary', null=True)
50 milestone = indexes.CharField(model_attr='milestone', null=True) 68 milestone = indexes.CharField(model_attr='milestone', null=True)
51 component = indexes.CharField(model_attr='component', null=True) 69 component = indexes.CharField(model_attr='component', null=True)
52 version = indexes.CharField(model_attr='version', null=True) 70 version = indexes.CharField(model_attr='version', null=True)
53 severity = indexes.CharField(model_attr='severity', null=True) 71 severity = indexes.CharField(model_attr='severity', null=True)
54 reporter = indexes.CharField(model_attr='reporter', null=True) 72 reporter = indexes.CharField(model_attr='reporter', null=True)
55 - author = indexes.CharField(null=True)  
56 - author_url = indexes.CharField(null=True)  
57 - status = indexes.CharField(model_attr='status', null=True)  
58 keywords = indexes.CharField(model_attr='keywords', null=True) 73 keywords = indexes.CharField(model_attr='keywords', null=True)
59 collaborators = indexes.CharField(model_attr='collaborators', null=True) 74 collaborators = indexes.CharField(model_attr='collaborators', null=True)
60 - created = indexes.DateTimeField(model_attr='created', null=True)  
61 - modified = indexes.DateTimeField(model_attr='modified', null=True)  
62 -  
63 - url = indexes.CharField(model_attr='get_absolute_url')  
64 - type = indexes.CharField()  
65 75
66 def get_model(self): 76 def get_model(self):
67 return Ticket 77 return Ticket
@@ -81,22 +91,32 @@ class TicketIndex(indexes.SearchIndex, indexes.Indexable): @@ -81,22 +91,32 @@ class TicketIndex(indexes.SearchIndex, indexes.Indexable):
81 return author.get_absolute_url() 91 return author.get_absolute_url()
82 return None 92 return None
83 93
  94 + def prepare_icon_name(self, obj):
  95 + return u'tag'
  96 +
  97 + def prepare_title(self, obj):
  98 + return u'#{} - {}'.format(obj.pk, obj.summary)
  99 +
84 def prepare_type(self, obj): 100 def prepare_type(self, obj):
85 return 'ticket' 101 return 'ticket'
86 102
87 103
88 class RevisionIndex(indexes.SearchIndex, indexes.Indexable): 104 class RevisionIndex(indexes.SearchIndex, indexes.Indexable):
  105 + # common fields
89 text = indexes.CharField(document=True, use_template=True) 106 text = indexes.CharField(document=True, use_template=True)
90 - repository_name = indexes.CharField(model_attr='repository_name')  
91 - revision = indexes.CharField(model_attr='rev')  
92 - created = indexes.DateTimeField(model_attr='created', null=True)  
93 - modified = indexes.DateTimeField(model_attr='created', null=True) 107 + url = indexes.CharField(model_attr='get_absolute_url')
  108 + title = indexes.CharField()
  109 + description = indexes.CharField(model_attr='message', null=True)
94 author = indexes.CharField(null=True) 110 author = indexes.CharField(null=True)
95 author_url = indexes.CharField(null=True) 111 author_url = indexes.CharField(null=True)
96 - message = indexes.CharField(model_attr='message', null=True)  
97 -  
98 - url = indexes.CharField(model_attr='get_absolute_url') 112 + created = indexes.DateTimeField(model_attr='created', null=True)
  113 + modified = indexes.DateTimeField(model_attr='created', null=True)
99 type = indexes.CharField() 114 type = indexes.CharField()
  115 + icon_name = indexes.CharField()
  116 +
  117 + # trac extra fields
  118 + repository_name = indexes.CharField(model_attr='repository_name')
  119 + revision = indexes.CharField(model_attr='rev')
100 120
101 def get_model(self): 121 def get_model(self):
102 return Revision 122 return Revision
@@ -116,5 +136,11 @@ class RevisionIndex(indexes.SearchIndex, indexes.Indexable): @@ -116,5 +136,11 @@ class RevisionIndex(indexes.SearchIndex, indexes.Indexable):
116 return author.get_absolute_url() 136 return author.get_absolute_url()
117 return None 137 return None
118 138
  139 + def prepare_icon_name(self, obj):
  140 + return u'align-right'
  141 +
  142 + def prepare_title(self, obj):
  143 + return u'{} [{}]'.format(obj.repository_name, obj.rev)
  144 +
119 def prepare_type(self, obj): 145 def prepare_type(self, obj):
120 return 'changeset' 146 return 'changeset'
src/super_archives/models.py
@@ -73,7 +73,7 @@ class MailingList(models.Model): @@ -73,7 +73,7 @@ class MailingList(models.Model):
73 last_imported_index = models.IntegerField(default=0) 73 last_imported_index = models.IntegerField(default=0)
74 74
75 def get_absolute_url(self): 75 def get_absolute_url(self):
76 - return u'{}?list={}'.format(reverse('list_messages'), self.name) 76 + return u'{}?list={}'.format(reverse('thread_list'), self.name)
77 77
78 def __unicode__(self): 78 def __unicode__(self):
79 return self.name 79 return self.name
src/super_archives/search_indexes.py
@@ -6,16 +6,21 @@ from .models import Message @@ -6,16 +6,21 @@ from .models import Message
6 6
7 7
8 class MessageIndex(indexes.SearchIndex, indexes.Indexable): 8 class MessageIndex(indexes.SearchIndex, indexes.Indexable):
  9 + # common fields
9 text = indexes.CharField(document=True, use_template=True) 10 text = indexes.CharField(document=True, use_template=True)
10 - mailinglist = indexes.CharField(model_attr='thread__mailinglist__name')  
11 - description = indexes.CharField(model_attr='body') 11 + url = indexes.CharField(null=True)
12 title = indexes.CharField(model_attr='subject_clean') 12 title = indexes.CharField(model_attr='subject_clean')
  13 + description = indexes.CharField(model_attr='body')
13 modified = indexes.DateTimeField(model_attr='received_time') 14 modified = indexes.DateTimeField(model_attr='received_time')
14 author = indexes.CharField(null=True) 15 author = indexes.CharField(null=True)
15 author_url = indexes.CharField(null=True) 16 author_url = indexes.CharField(null=True)
16 - url = indexes.CharField(model_attr='url', null=True)  
17 -  
18 type = indexes.CharField() 17 type = indexes.CharField()
  18 + icon_name = indexes.CharField()
  19 + tag = indexes.CharField(model_attr='thread__mailinglist__name')
  20 +
  21 + mailinglist_url = indexes.CharField(
  22 + model_attr='thread__mailinglist__get_absolute_url'
  23 + )
19 24
20 def get_model(self): 25 def get_model(self):
21 return Message 26 return Message
@@ -35,9 +40,15 @@ class MessageIndex(indexes.SearchIndex, indexes.Indexable): @@ -35,9 +40,15 @@ class MessageIndex(indexes.SearchIndex, indexes.Indexable):
35 return obj.from_address.user.get_absolute_url() 40 return obj.from_address.user.get_absolute_url()
36 return None 41 return None
37 42
  43 + def prepare_icon_name(self, obj):
  44 + return u'envelope'
  45 +
38 def prepare_type(self, obj): 46 def prepare_type(self, obj):
39 return u'thread' 47 return u'thread'
40 48
  49 + def prepare_url(self, obj):
  50 + return u'{}#msg-{}'.format(obj.url, obj.pk)
  51 +
41 def index_queryset(self, using=None): 52 def index_queryset(self, using=None):
42 return self.get_model().objects.filter( 53 return self.get_model().objects.filter(
43 thread__spam=False, spam=False 54 thread__spam=False, spam=False