diff options
Diffstat (limited to 'chimere/views.py')
| -rw-r--r-- | chimere/views.py | 27 | 
1 files changed, 25 insertions, 2 deletions
| diff --git a/chimere/views.py b/chimere/views.py index 9b25458..968492c 100644 --- a/chimere/views.py +++ b/chimere/views.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2008-2013  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2008-2014  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet>  #  # RSS : Copyright (C) 2010 Pierre Clarenc <pierre.crc_AT_gmailDOTcom>,  #                          Samuel Renard <renard.samuel_AT_gmailDOTcom>, @@ -175,13 +175,15 @@ def index(request, area_name=None, default_area=None, simple=False,           'actions':actions(response_dct['area_name']),           'action_selected':('view',),           'error_message':'', +         'is_map':True,           'news_visible': news_visible,           'areas_visible': settings.CHIMERE_DISPLAY_AREAS,           'map_layer':settings.CHIMERE_DEFAULT_MAP_LAYER,           'dynamic_categories':response_dct['dynamic_categories'],           'zoomout':zoomout,           'has_default_area':Area.objects.filter(default=True).count(), -         'zoomout':zoomout +         'zoomout':zoomout, +         'has_search':settings.CHIMERE_SEARCH_ENGINE          })      if hasattr(settings, 'CONTACT_EMAIL') and settings.CONTACT_EMAIL:          response_dct['contact_email'] = settings.CONTACT_EMAIL @@ -932,3 +934,24 @@ def rss(request, area_name=''):      else:          return render_to_response('chimere/feeds/rss.html', response_dct,                                    context_instance=RequestContext(request)) + +from django.core.paginator import Paginator, InvalidPage + +SearchView = None +autocomplete = None +if hasattr(settings, 'CHIMERE_SEARCH_ENGINE') \ +   and settings.CHIMERE_SEARCH_ENGINE: +    from haystack.views import SearchView as HaystackSearchView +    from haystack.query import SearchQuerySet +    class SearchView(HaystackSearchView): +        pass +    def autocomplete(request): +        sqs = SearchQuerySet().autocomplete( +                                content_auto=request.GET.get('q', ''))[:5] +        suggestions = [result.object.name for result in sqs if result.object] +        # make sure it returns a JSON object, not a bare list. +        # otherwise, it could be vulnerable to an XSS attack. +        the_data = json.dumps({ +            'results': suggestions +        }) +        return HttpResponse(the_data, content_type='application/json') | 
