diff --git a/src/accounts/search_indexes.py b/src/accounts/search_indexes.py index 6cff0d3..12ca539 100644 --- a/src/accounts/search_indexes.py +++ b/src/accounts/search_indexes.py @@ -6,25 +6,37 @@ from .models import User class UserIndex(indexes.SearchIndex, indexes.Indexable): + # common fields text = indexes.CharField(document=True, use_template=True) + url = indexes.CharField(model_attr='get_absolute_url') + title = indexes.CharField(model_attr='get_full_name') + description = indexes.CharField(null=True) + type = indexes.CharField() + icon_name = indexes.CharField() + + # extra fields username = indexes.CharField(model_attr='username') name = indexes.CharField(model_attr='get_full_name') email = indexes.CharField(model_attr='email') institution = indexes.CharField(model_attr='institution', null=True) role = indexes.CharField(model_attr='role', null=True) - twitter = indexes.CharField(model_attr='twitter', null=True) - facebook = indexes.CharField(model_attr='facebook', null=True) google_talk = indexes.CharField(model_attr='google_talk', null=True) webpage = indexes.CharField(model_attr='webpage', null=True) - type = indexes.CharField() - def get_model(self): return User def get_updated_field(self): return 'date_joined' + def prepare_description(self, obj): + if obj.institution and obj.role: + return u'{} ({})'.format(obj.institution, obj.role) + return obj.institution if obj.institution else obj.role + + def prepare_icon_name(self, obj): + return u'user' + def prepare_type(self, obj): return u'user' diff --git a/src/proxy/search_indexes.py b/src/proxy/search_indexes.py index 33e8332..ee943c1 100644 --- a/src/proxy/search_indexes.py +++ b/src/proxy/search_indexes.py @@ -9,17 +9,20 @@ from .models import Ticket, Wiki, Revision class WikiIndex(indexes.SearchIndex, indexes.Indexable): + # common fields text = indexes.CharField(document=True, use_template=True) - name = indexes.CharField(model_attr='name') - wiki_text = indexes.CharField(model_attr='wiki_text') + url = indexes.CharField(model_attr='get_absolute_url') + title = indexes.CharField(model_attr='name') + description = indexes.CharField(model_attr='wiki_text', null=True) author = indexes.CharField(null=True) author_url = indexes.CharField(null=True) - collaborators = indexes.CharField(model_attr='collaborators', null=True) created = indexes.DateTimeField(model_attr='created', null=True) modified = indexes.DateTimeField(model_attr='modified', null=True) - - url = indexes.CharField(model_attr='get_absolute_url') type = indexes.CharField() + icon_name = indexes.CharField() + + # trac extra fields + collaborators = indexes.CharField(model_attr='collaborators', null=True) def get_model(self): return Wiki @@ -39,29 +42,36 @@ class WikiIndex(indexes.SearchIndex, indexes.Indexable): return author.get_absolute_url() return None + def prepare_icon_name(self, obj): + return u'file' + def prepare_type(self, obj): return u'wiki' class TicketIndex(indexes.SearchIndex, indexes.Indexable): + # common fields text = indexes.CharField(document=True, use_template=True) - summary = indexes.CharField(model_attr='summary', null=True) + url = indexes.CharField(model_attr='get_absolute_url') + title = indexes.CharField() description = indexes.CharField(model_attr='description', null=True) + author = indexes.CharField(null=True) + author_url = indexes.CharField(null=True) + created = indexes.DateTimeField(model_attr='created', null=True) + modified = indexes.DateTimeField(model_attr='modified', null=True) + type = indexes.CharField() + icon_name = indexes.CharField() + tag = indexes.CharField(model_attr='status', null=True) + + # trac extra fields + summary = indexes.CharField(model_attr='summary', null=True) milestone = indexes.CharField(model_attr='milestone', null=True) component = indexes.CharField(model_attr='component', null=True) version = indexes.CharField(model_attr='version', null=True) severity = indexes.CharField(model_attr='severity', null=True) reporter = indexes.CharField(model_attr='reporter', null=True) - author = indexes.CharField(null=True) - author_url = indexes.CharField(null=True) - status = indexes.CharField(model_attr='status', null=True) keywords = indexes.CharField(model_attr='keywords', null=True) collaborators = indexes.CharField(model_attr='collaborators', null=True) - created = indexes.DateTimeField(model_attr='created', null=True) - modified = indexes.DateTimeField(model_attr='modified', null=True) - - url = indexes.CharField(model_attr='get_absolute_url') - type = indexes.CharField() def get_model(self): return Ticket @@ -81,22 +91,32 @@ class TicketIndex(indexes.SearchIndex, indexes.Indexable): return author.get_absolute_url() return None + def prepare_icon_name(self, obj): + return u'tag' + + def prepare_title(self, obj): + return u'#{} - {}'.format(obj.pk, obj.summary) + def prepare_type(self, obj): return 'ticket' class RevisionIndex(indexes.SearchIndex, indexes.Indexable): + # common fields text = indexes.CharField(document=True, use_template=True) - repository_name = indexes.CharField(model_attr='repository_name') - revision = indexes.CharField(model_attr='rev') - created = indexes.DateTimeField(model_attr='created', null=True) - modified = indexes.DateTimeField(model_attr='created', null=True) + url = indexes.CharField(model_attr='get_absolute_url') + title = indexes.CharField() + description = indexes.CharField(model_attr='message', null=True) author = indexes.CharField(null=True) author_url = indexes.CharField(null=True) - message = indexes.CharField(model_attr='message', null=True) - - url = indexes.CharField(model_attr='get_absolute_url') + created = indexes.DateTimeField(model_attr='created', null=True) + modified = indexes.DateTimeField(model_attr='created', null=True) type = indexes.CharField() + icon_name = indexes.CharField() + + # trac extra fields + repository_name = indexes.CharField(model_attr='repository_name') + revision = indexes.CharField(model_attr='rev') def get_model(self): return Revision @@ -116,5 +136,11 @@ class RevisionIndex(indexes.SearchIndex, indexes.Indexable): return author.get_absolute_url() return None + def prepare_icon_name(self, obj): + return u'align-right' + + def prepare_title(self, obj): + return u'{} [{}]'.format(obj.repository_name, obj.rev) + def prepare_type(self, obj): return 'changeset' diff --git a/src/super_archives/models.py b/src/super_archives/models.py index 94ad893..23a15ff 100644 --- a/src/super_archives/models.py +++ b/src/super_archives/models.py @@ -73,7 +73,7 @@ class MailingList(models.Model): last_imported_index = models.IntegerField(default=0) def get_absolute_url(self): - return u'{}?list={}'.format(reverse('list_messages'), self.name) + return u'{}?list={}'.format(reverse('thread_list'), self.name) def __unicode__(self): return self.name diff --git a/src/super_archives/search_indexes.py b/src/super_archives/search_indexes.py index 8d19d34..9e05eca 100644 --- a/src/super_archives/search_indexes.py +++ b/src/super_archives/search_indexes.py @@ -6,16 +6,21 @@ from .models import Message class MessageIndex(indexes.SearchIndex, indexes.Indexable): + # common fields text = indexes.CharField(document=True, use_template=True) - mailinglist = indexes.CharField(model_attr='thread__mailinglist__name') - description = indexes.CharField(model_attr='body') + url = indexes.CharField(null=True) title = indexes.CharField(model_attr='subject_clean') + description = indexes.CharField(model_attr='body') modified = indexes.DateTimeField(model_attr='received_time') author = indexes.CharField(null=True) author_url = indexes.CharField(null=True) - url = indexes.CharField(model_attr='url', null=True) - type = indexes.CharField() + icon_name = indexes.CharField() + tag = indexes.CharField(model_attr='thread__mailinglist__name') + + mailinglist_url = indexes.CharField( + model_attr='thread__mailinglist__get_absolute_url' + ) def get_model(self): return Message @@ -35,9 +40,15 @@ class MessageIndex(indexes.SearchIndex, indexes.Indexable): return obj.from_address.user.get_absolute_url() return None + def prepare_icon_name(self, obj): + return u'envelope' + def prepare_type(self, obj): return u'thread' + def prepare_url(self, obj): + return u'{}#msg-{}'.format(obj.url, obj.pk) + def index_queryset(self, using=None): return self.get_model().objects.filter( thread__spam=False, spam=False -- libgit2 0.21.2