# -*- coding: utf-8 -*- from django import forms from django.utils.translation import ugettext_lazy as _ from theme.models import Theme from haystack.query import SearchQuerySet class AdminSearchForm(forms.Form): search_name = forms.CharField(required=False, max_length=50) class ThemeSearch(forms.Form): event = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple(attrs={'class': 'topicChecks'}), choices=[('exposition', _(u'выставки')), ('conference', _(u'конференции')), ('seminar', _(u'семинары')), ('webinar', _(u'вебинары'))]) theme = forms.ModelMultipleChoiceField(required=False, queryset=[], widget=forms.CheckboxSelectMultiple) from country.models import Area class PlaceSearch(forms.Form): r = forms.ModelMultipleChoiceField(queryset=Area.objects.all(), required=False, widget=forms.CheckboxSelectMultiple()) c = forms.CharField(widget=forms.CheckboxSelectMultiple(), required=False) t = forms.CharField(widget=forms.CheckboxSelectMultiple()) class AbstractSearch(forms.Form): q = forms.CharField(label=_(u'Поиск'), required=False) w = forms.CharField(label=_(u'Где'), required=False) model = None def search(self): if not self.is_valid(): return [] q = self.cleaned_data.get('q') w = self.cleaned_data.get('w') if not q and not w: return [] sqs = SearchQuerySet().models(self.model) if q: sqs = sqs.auto_query(q) if w: sqs = sqs.filter(where__contains=w) return sqs #sqs = SearchQuerySet().models(self.model).auto_query(self.cleaned_data.get('q')) #return sqs from place_exposition.models import PlaceExposition from place_exposition.models import EXPOSITION_TYPE class SearchPlaceExpositionForm(AbstractSearch): model = PlaceExposition type = forms.ChoiceField(choices=EXPOSITION_TYPE, required=False)