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 6  
7 7  
8 8 class UserIndex(indexes.SearchIndex, indexes.Indexable):
  9 + # common fields
9 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 18 username = indexes.CharField(model_attr='username')
11 19 name = indexes.CharField(model_attr='get_full_name')
12 20 email = indexes.CharField(model_attr='email')
13 21 institution = indexes.CharField(model_attr='institution', null=True)
14 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 23 google_talk = indexes.CharField(model_attr='google_talk', null=True)
18 24 webpage = indexes.CharField(model_attr='webpage', null=True)
19 25  
20   - type = indexes.CharField()
21   -
22 26 def get_model(self):
23 27 return User
24 28  
25 29 def get_updated_field(self):
26 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 40 def prepare_type(self, obj):
29 41 return u'user'
30 42  
... ...
src/proxy/search_indexes.py
... ... @@ -9,17 +9,20 @@ from .models import Ticket, Wiki, Revision
9 9  
10 10  
11 11 class WikiIndex(indexes.SearchIndex, indexes.Indexable):
  12 + # common fields
12 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 17 author = indexes.CharField(null=True)
16 18 author_url = indexes.CharField(null=True)
17   - collaborators = indexes.CharField(model_attr='collaborators', null=True)
18 19 created = indexes.DateTimeField(model_attr='created', null=True)
19 20 modified = indexes.DateTimeField(model_attr='modified', null=True)
20   -
21   - url = indexes.CharField(model_attr='get_absolute_url')
22 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 27 def get_model(self):
25 28 return Wiki
... ... @@ -39,29 +42,36 @@ class WikiIndex(indexes.SearchIndex, indexes.Indexable):
39 42 return author.get_absolute_url()
40 43 return None
41 44  
  45 + def prepare_icon_name(self, obj):
  46 + return u'file'
  47 +
42 48 def prepare_type(self, obj):
43 49 return u'wiki'
44 50  
45 51  
46 52 class TicketIndex(indexes.SearchIndex, indexes.Indexable):
  53 + # common fields
47 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 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 68 milestone = indexes.CharField(model_attr='milestone', null=True)
51 69 component = indexes.CharField(model_attr='component', null=True)
52 70 version = indexes.CharField(model_attr='version', null=True)
53 71 severity = indexes.CharField(model_attr='severity', null=True)
54 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 73 keywords = indexes.CharField(model_attr='keywords', null=True)
59 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 76 def get_model(self):
67 77 return Ticket
... ... @@ -81,22 +91,32 @@ class TicketIndex(indexes.SearchIndex, indexes.Indexable):
81 91 return author.get_absolute_url()
82 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 100 def prepare_type(self, obj):
85 101 return 'ticket'
86 102  
87 103  
88 104 class RevisionIndex(indexes.SearchIndex, indexes.Indexable):
  105 + # common fields
89 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 110 author = indexes.CharField(null=True)
95 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 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 121 def get_model(self):
102 122 return Revision
... ... @@ -116,5 +136,11 @@ class RevisionIndex(indexes.SearchIndex, indexes.Indexable):
116 136 return author.get_absolute_url()
117 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 145 def prepare_type(self, obj):
120 146 return 'changeset'
... ...
src/super_archives/models.py
... ... @@ -73,7 +73,7 @@ class MailingList(models.Model):
73 73 last_imported_index = models.IntegerField(default=0)
74 74  
75 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 78 def __unicode__(self):
79 79 return self.name
... ...
src/super_archives/search_indexes.py
... ... @@ -6,16 +6,21 @@ from .models import Message
6 6  
7 7  
8 8 class MessageIndex(indexes.SearchIndex, indexes.Indexable):
  9 + # common fields
9 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 12 title = indexes.CharField(model_attr='subject_clean')
  13 + description = indexes.CharField(model_attr='body')
13 14 modified = indexes.DateTimeField(model_attr='received_time')
14 15 author = indexes.CharField(null=True)
15 16 author_url = indexes.CharField(null=True)
16   - url = indexes.CharField(model_attr='url', null=True)
17   -
18 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 25 def get_model(self):
21 26 return Message
... ... @@ -35,9 +40,15 @@ class MessageIndex(indexes.SearchIndex, indexes.Indexable):
35 40 return obj.from_address.user.get_absolute_url()
36 41 return None
37 42  
  43 + def prepare_icon_name(self, obj):
  44 + return u'envelope'
  45 +
38 46 def prepare_type(self, obj):
39 47 return u'thread'
40 48  
  49 + def prepare_url(self, obj):
  50 + return u'{}#msg-{}'.format(obj.url, obj.pk)
  51 +
41 52 def index_queryset(self, using=None):
42 53 return self.get_model().objects.filter(
43 54 thread__spam=False, spam=False
... ...