You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.2 KiB
64 lines
2.2 KiB
# -*- 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)
|
|
|