remotes/origin/1203
Nazar Kotyuk 12 years ago
parent 6f112404b1
commit 3d5e89b48b
  1. 1
      company/views.py
  2. 2
      conference/search_indexes.py
  3. 2
      exposition/search_indexes.py
  4. 3
      exposition/urls.py
  5. 39
      exposition/views.py
  6. 28
      functions/search_forms.py
  7. 7
      place_exposition/search_indexes.py
  8. 2
      seminar/search_indexes.py
  9. 2
      webinar/search_indexes.py

@ -21,7 +21,6 @@ class CompanySearchView(ListView):
if form.is_valid(): if form.is_valid():
return form.search() return form.search()
else: else:
asdsa
return EmptySearchQuerySet() return EmptySearchQuerySet()
else: else:
return EmptySearchQuerySet() return EmptySearchQuerySet()

@ -2,7 +2,7 @@ from haystack import indexes
from models import Conference from models import Conference
class PlaceExpositionIndex(indexes.SearchIndex, indexes.Indexable): class ConferenceIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True) text = indexes.CharField(document=True, use_template=True)
where = indexes.MultiValueField() where = indexes.MultiValueField()
def prepare_where(self, obj): def prepare_where(self, obj):

@ -2,7 +2,7 @@ from haystack import indexes
from models import Exposition from models import Exposition
class PlaceExpositionIndex(indexes.SearchIndex, indexes.Indexable): class ExpositionIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True) text = indexes.CharField(document=True, use_template=True)
where = indexes.MultiValueField() where = indexes.MultiValueField()
def prepare_where(self, obj): def prepare_where(self, obj):

@ -1,9 +1,10 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.conf.urls import patterns, include, url from django.conf.urls import patterns, include, url
from views import ExpositionView, ExpositionVisitors, ExpositionMembers, ExpositionStatistic, ExpositionPrice,\ from views import ExpositionView, ExpositionVisitors, ExpositionMembers, ExpositionStatistic, ExpositionPrice,\
ExpositionProgramme ExpositionProgramme, ExpositionSearchView
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'expositions/search/', ExpositionSearchView.as_view()),
url(r'expositions/(?P<params>.*)/(?P<page>\d+)/$', ExpositionView.as_view()), url(r'expositions/(?P<params>.*)/(?P<page>\d+)/$', ExpositionView.as_view()),
url(r'expositions/(?P<page>\d+)/$', ExpositionView.as_view()), url(r'expositions/(?P<page>\d+)/$', ExpositionView.as_view()),
# #

@ -9,13 +9,52 @@ from models import Exposition
from accounts.models import User from accounts.models import User
from functions.custom_views import ExpoListView, ExpoMixin, EventDetail from functions.custom_views import ExpoListView, ExpoMixin, EventDetail
from django.views.generic import ListView, DetailView from django.views.generic import ListView, DetailView
from haystack.query import EmptySearchQuerySet
from functions.search_forms import ExpositionSearchForm
# #
import json import json
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
class ExpositionSearchView(ListView):
paginate_by = 2
template_name = 'exposition/search.html'
search_form = ExpositionSearchForm
model = Exposition
def get_queryset(self):
if self.request.GET:
form = self.search_form(self.request.GET)
if form.is_valid():
return form.search()
else:
return EmptySearchQuerySet()
else:
return EmptySearchQuerySet()
def get_context_data(self, **kwargs):
context = super(ExpositionSearchView, self).get_context_data(**kwargs)
context['search_form'] = ExpositionSearchForm(self.request.GET)
queries = self.request.GET.copy()
if queries.has_key('page'):
del queries['page']
context['queries'] = queries
context['search_action'] = '/expositions/search/'
return context
class ExpositionView(ExpoListView): class ExpositionView(ExpoListView):
model = Exposition model = Exposition
template_name = 'event_catalog.html' template_name = 'event_catalog.html'
search_form = ExpositionSearchForm
def get_context_data(self, **kwargs):
context = super(ExpositionView, self).get_context_data(**kwargs)
context['search_action'] = '/expositions/search/'
return context
class ExpositionVisitors(ExpositionView): class ExpositionVisitors(ExpositionView):
model = Exposition model = Exposition

@ -75,6 +75,34 @@ class CompanySearchForm(AbstactSearchForm):
return sqs return sqs
class ExpositionSearchForm(forms.Form):
q = forms.CharField(label=_(u'Поиск'), required=False)
w = forms.CharField(label=_(u'Где'), required=False)
# fr = forms.DateField(required=False)
# to = forms.DateField(required=False)
def search(self):
if not self.is_valid():
return EmptySearchQuerySet()
q = self.cleaned_data.get('q')
w = self.cleaned_data.get('w')
if not q and not w:
return EmptySearchQuerySet()
sqs = SearchQuerySet().models(Exposition)
if q:
sqs = sqs.auto_query(q)
if w:
sqs = sqs.filter(where__contains=w)
return sqs
class EventSearchForm(forms.Form): class EventSearchForm(forms.Form):
q = forms.CharField(label=_(u'Поиск'), required=False) q = forms.CharField(label=_(u'Поиск'), required=False)
w = forms.CharField(label=_(u'Где'), required=False) w = forms.CharField(label=_(u'Где'), required=False)

@ -5,9 +5,9 @@ from models import PlaceExposition
class PlaceExpositionIndex(indexes.SearchIndex, indexes.Indexable): class PlaceExpositionIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True) text = indexes.CharField(document=True, use_template=True)
where = indexes.MultiValueField() where = indexes.MultiValueField()
country = indexes.CharField(model_attr='country', null=True) #country = indexes.CharField(model_attr='country', null=True)
city = indexes.CharField(model_attr='city', null=True) #city = indexes.CharField(model_attr='city', null=True)
"""
def prepare_country(self, obj): def prepare_country(self, obj):
if obj.country: if obj.country:
return '%s'%obj.country.id return '%s'%obj.country.id
@ -17,6 +17,7 @@ class PlaceExpositionIndex(indexes.SearchIndex, indexes.Indexable):
if obj.city: if obj.city:
return '%s'%obj.country.city return '%s'%obj.country.city
return '' return ''
"""
def prepare_where(self, obj): def prepare_where(self, obj):
country = [tr.name for tr in obj.country.translations.all()] country = [tr.name for tr in obj.country.translations.all()]

@ -2,7 +2,7 @@ from haystack import indexes
from models import Seminar from models import Seminar
class PlaceExpositionIndex(indexes.SearchIndex, indexes.Indexable): class SeminarIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True) text = indexes.CharField(document=True, use_template=True)
where = indexes.MultiValueField() where = indexes.MultiValueField()
def prepare_where(self, obj): def prepare_where(self, obj):

@ -2,7 +2,7 @@ from haystack import indexes
from models import Webinar from models import Webinar
class PlaceExpositionIndex(indexes.SearchIndex, indexes.Indexable): class WebinarIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True) text = indexes.CharField(document=True, use_template=True)
where = indexes.MultiValueField() where = indexes.MultiValueField()
def prepare_where(self, obj): def prepare_where(self, obj):

Loading…
Cancel
Save