diff options
Diffstat (limited to 'chimere/views.py')
-rw-r--r-- | chimere/views.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/chimere/views.py b/chimere/views.py index c6372db..92b21f5 100644 --- a/chimere/views.py +++ b/chimere/views.py @@ -35,6 +35,7 @@ from django.contrib.auth.forms import AuthenticationForm from django.contrib.gis.geos import GEOSGeometry from django.contrib.gis.gdal.error import OGRException from django.contrib.gis.measure import D +from django.contrib.sites.models import get_current_site from django.core import serializers from django.core.exceptions import ObjectDoesNotExist from django.core.urlresolvers import reverse @@ -78,6 +79,8 @@ def get_base_response(request, map_name="", propose=False): """ base_response_dct = {'media_path':settings.MEDIA_URL, 'is_authenticated':request.user.is_authenticated()} + base_response_dct['MOBILE'] = settings.MOBILE_TEST or \ + get_current_site(request).domain in settings.MOBILE_DOMAINS base_url = reverse("chimere:index") if not base_url.startswith('/'): base_url = '/' + base_url @@ -108,6 +111,8 @@ def get_base_response(request, map_name="", propose=False): base_response_dct['JQUERY_JS_URLS'] = settings.JQUERY_JS_URLS base_response_dct['JQUERY_CSS_URLS'] = settings.JQUERY_CSS_URLS base_response_dct['PROJECT_NAME'] = settings.PROJECT_NAME + if hasattr(settings, 'EXTRA_CSS'): + base_response_dct['EXTRA_CSS'] = settings.EXTRA_CSS return base_response_dct, None def getShareUrl(request, map_name='', network=''): @@ -195,6 +200,7 @@ def index(request, map_name=None, default_map=None, simple=False, 'actions':actions(request.user, response_dct['map_name']), 'action_selected':('view',), 'error_message':'', + 'is_map':True, 'news_visible': news_visible, 'maps_visible': settings.CHIMERE_DISPLAY_MAPS, 'map_layer':settings.CHIMERE_DEFAULT_MAP_LAYER, @@ -202,12 +208,16 @@ def index(request, map_name=None, default_map=None, simple=False, 'zoomout':zoomout, 'has_default_map':Map.objects.filter(default=True).count(), 'zoomout':zoomout, + 'has_search':settings.CHIMERE_SEARCH_ENGINE + 'has_default_area':Area.objects.filter(default=True).count(), + 'zoomout':zoomout, }) if hasattr(settings, 'CONTACT_EMAIL') and settings.CONTACT_EMAIL: response_dct['contact_email'] = settings.CONTACT_EMAIL response_dct['share_networks'], net_dct = \ getShareNetwork(request, response_dct['map_name']) tpl = 'chimere/main_map.html' + response_dct['simple'] = simple if simple: tpl = 'chimere/main_map_simple.html' if get_response: @@ -493,6 +503,8 @@ def submited(request, map_name="", action="", actions=default_actions): return redir response_dct.update({'actions':actions(request.user, response_dct['map_name']), 'action_selected':action,}) + if hasattr(settings, 'CONTACT_EMAIL') and settings.CONTACT_EMAIL: + response_dct['contact_email'] = settings.CONTACT_EMAIL return render_to_response('chimere/submited.html', response_dct, context_instance=RequestContext(request)) @@ -586,6 +598,7 @@ def getDetail(request, map_name, marker_id): response_dct['time_now'] = datetime.datetime.now().strftime('%H%M%S') response_dct['dated'] = settings.CHIMERE_DAYS_BEFORE_EVENT \ and marker.start_date + response_dct['routing_enabled'] = settings.CHIMERE_ENABLE_ROUTING return render_to_response('chimere/detail.html', response_dct, context_instance=RequestContext(request)) @@ -983,3 +996,24 @@ def rss(request, map_name='', actions=default_actions): 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') |