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.
 
 
 
 
 
 

55 lines
1.8 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, choices=[(0, _(u'выставки')),
(1, _(u'конференции')),
(2, _(u'семинары')),
(3, _(u'вебинары'))])
theme = forms.ModelMultipleChoiceField(required=False, queryset=Theme.objects.all(),
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)