forms.py 1.56 KB
# -*- coding: utf-8 -*-

import unicodedata

from django import forms
from django.utils.translation import ugettext_lazy as _
from haystack.forms import SearchForm

from accounts.models import User
from super_archives.models import Message


class ColabSearchForm(SearchForm):
    q = forms.CharField(label=_('Search'))
    type = forms.CharField(required=False, label=_(u'Type'))

    def search(self):
        if not self.is_valid():
            return self.no_query_found()

        if self.cleaned_data.get('q'):
            q = unicodedata.normalize(
                'NFKD', unicode(self.cleaned_data.get('q'))
            ).encode('ascii', 'ignore')
            sqs = self.searchqueryset.auto_query(q)
        else:
            sqs = self.searchqueryset.all()

        if self.cleaned_data['type']:
            sqs = sqs.filter(type=self.cleaned_data['type'])
           # if self.cleaned_data['type'] == 'user':
           #     sqs = self.searchqueryset.models(User)
           # elif self.cleaned_data['type'] in ['message', 'thread']:
           #     sqs = self.searchqueryset.models(Message)
           # elif self.cleaned_data['type'] == 'wiki':
           #     sqs = self.searchqueryset.models(Wiki)
           # elif self.cleaned_data['type'] == 'changeset':
           #     sqs = self.searchqueryset.models(Changeset)
           # elif self.cleaned_data['type'] == 'ticket':
           #     sqs = self.searchqueryset.models(Ticket)
           # else:
           #     sqs = self.searchqueryset.all()


        if self.load_all:
            sqs = sqs.load_all()

        return sqs