diff options
Diffstat (limited to 'chimere/views.py')
-rw-r--r-- | chimere/views.py | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/chimere/views.py b/chimere/views.py index 83b0b28..ee27d26 100644 --- a/chimere/views.py +++ b/chimere/views.py @@ -39,7 +39,7 @@ from django.shortcuts import get_object_or_404, redirect, render from django.template import defaultfilters from django.utils.http import urlquote from django.utils.translation import ugettext as _ -from django.views.generic import TemplateView, ListView +from django.views.generic import TemplateView, ListView, FormView from chimere.actions import actions from chimere import models @@ -1273,7 +1273,44 @@ def property_choice_list(request, area_name='', property_slug=''): content_type="application/json") -SearchView = None +class SearchView(FormView): + template_name = 'search/search.html' + form_class = forms.SearchForm + results_per_page = settings.SEARCH_RESULTS_PER_PAGE + + def get_results(self, query, area=None): + results = [] + for model in [models.Marker, models.Route, models.Polygon]: + results += model.search(query, area=area, get_json=True) + return results + + def get_context_data(self, **kwargs): + context = super(SearchView, self).get_context_data(**kwargs) + area, area_name = get_area(self.kwargs.get('area_name', None)) + query, results = None, [] + if "q" in self.request.GET: + query = self.request.GET['q'] + results = self.get_results(query, area) + context.update({ + 'query': query, + 'results': results, + 'area_name': area_name + }) + # (paginator, page) = self.build_page() + + # context.update({ 'query': self.query, }) + + """ + if self.results and hasattr(self.results, 'query') and self.results.query.backend.include_spelling: + context['suggestion'] = self.form.get_suggestion() + + context.update(self.extra_context()) + """ + + return context + + + autocomplete = None if getattr(settings, 'HAYSTACK_SEARCH_ENGINE', None): @@ -1304,6 +1341,3 @@ if getattr(settings, 'HAYSTACK_SEARCH_ENGINE', None): 'spelling': spelling, }) return HttpResponse(the_data, content_type='application/json') -else: - # TODO SEARCH - pass |