# -*- coding:utf-8 -*- from django.conf import settings from django.utils.translation import ugettext as _ from haystack.views import SearchView #from proxy.trac.models import Attachment class ColabSearchView(SearchView): def extra_context(self, *args, **kwargs): use_language, date_format = settings.DJANGO_DATE_FORMAT_TO_JS.get( self.request.LANGUAGE_CODE, (None, None) ) types = { 'thread': { 'name': _(u'Discussion'), 'fields': ( ('author', _(u'Author'), self.request.GET.get('author')), ( 'list', _(u'Mailinglist'), self.request.GET.getlist('list') ), ), }, } # TODO: Replace for a more generic plugin architecture #if settings.TRAC_ENABLED: # types['wiki'] = { # 'name': _(u'Wiki'), # 'fields': ( # ('author', _(u'Author'), self.request.GET.get('author')), # ( # 'collaborators', # _(u'Collaborators'), # self.request.GET.get('collaborators'), # ), # ), # } # types['ticket'] = { # 'name': _(u'Ticket'), # 'fields': ( # ( # 'milestone', # _(u'Milestone'), # self.request.GET.get('milestone') # ), # ( # 'priority', # _(u'Priority'), # self.request.GET.get('priority') # ), # ( # 'component', # _(u'Component'), # self.request.GET.get('component') # ), # ( # 'severity', # _(u'Severity'), # self.request.GET.get('severity') # ), # ( # 'reporter', # _(u'Reporter'), # self.request.GET.get('reporter') # ), # ('author', _(u'Author'), self.request.GET.get('author')), # ('tag', _(u'Status'), self.request.GET.get('tag')), # ( # 'keywords', # _(u'Keywords'), # self.request.GET.get('keywords'), # ), # ( # 'collaborators', # _(u'Collaborators'), # self.request.GET.get('collaborators') # ), # ), # } # types['changeset'] = { # 'name': _(u'Changeset'), # 'fields': ( # ('author', _(u'Author'), self.request.GET.get('author')), # ( # 'repository_name', # _(u'Repository'), # self.request.GET.get('repository_name'), # ), # ) # } # types['user'] = { # 'name': _(u'User'), # 'fields': ( # ( # 'username', # _(u'Username'), # self.request.GET.get('username'), # ), # ('name', _(u'Name'), self.request.GET.get('name')), # ( # 'institution', # _(u'Institution'), # self.request.GET.get('institution'), # ), # ('role', _(u'Role'), self.request.GET.get('role')) # ), # } # types['attachment'] = { # 'name': _(u'Attachment'), # 'fields': ( # ( # 'filename', # _(u'Filename'), # self.request.GET.get('filename') # ), # ('author', _(u'Author'), self.request.GET.get('author')), # ( # 'used_by', # _(u'Used by'), self.request.GET.get('used_by')), # ( # 'mimetype', # _(u'File type'), # self.request.GET.get('mimetype') # ), # ('size', _(u'Size'), self.request.GET.get('size')), # ) # } try: type_chosen = self.form.cleaned_data.get('type') except AttributeError: type_chosen = '' mimetype_choices = () size_choices = () used_by_choices = () if type_chosen == 'attachment': mimetype_choices = [(type_, display) for type_, display, mimelist_ in settings.FILE_TYPE_GROUPINGS] size_choices = [ ('<500KB', u'< 500 KB'), ('500KB__10MB', u'>= 500 KB <= 10 MB'), ('>10MB', u'> 10 MB'), ] used_by_choices = set([ (v, v) for v in Attachment.objects.values_list( 'used_by', flat=True) ]) mimetype_chosen = self.request.GET.get('mimetype') size_chosen = self.request.GET.get('size') used_by_chosen = self.request.GET.get('used_by') return dict( filters=types.get(type_chosen), type_chosen=type_chosen, order_data=settings.ORDERING_DATA, date_format=date_format, use_language=use_language, mimetype_chosen=mimetype_chosen if mimetype_chosen else '', mimetype_choices=mimetype_choices, size_chosen=size_chosen if size_chosen else '', size_choices=size_choices, used_by_chosen=used_by_chosen if used_by_chosen else '', used_by_choices=used_by_choices, )