diff options
Diffstat (limited to 'chimere/views.py')
-rw-r--r-- | chimere/views.py | 56 |
1 files changed, 39 insertions, 17 deletions
diff --git a/chimere/views.py b/chimere/views.py index b83b102..a8fe22e 100644 --- a/chimere/views.py +++ b/chimere/views.py @@ -79,11 +79,15 @@ def get_base_response(request, area_name=""): """ Get the base url """ - base_response_dct = {'media_path': settings.MEDIA_URL, - 'version': get_version()} - base_response_dct['MOBILE'] = \ - settings.MOBILE_TEST or \ - get_current_site(request).domain in settings.MOBILE_DOMAINS + current_site = get_current_site(request) + base_response_dct = { + 'media_path': settings.MEDIA_URL, 'version': get_version(), + 'current_site': (request.is_secure() and "https://" + or "http://") + current_site.domain, + "MOBILE": settings.MOBILE_TEST or + current_site.domain in settings.MOBILE_DOMAINS + } + base_url = reverse("chimere:index") if not base_url.startswith('/'): base_url = '/' + base_url @@ -176,13 +180,22 @@ def index(request, area_name=None, default_area=None, simple=False, settings.CHIMERE_ENABLE_ROUTING: response_dct['itinerary_form'] = RoutingForm() response_dct['routing_transport'] = settings.CHIMERE_ROUTING_TRANSPORT - if request.GET and 'current_feature' in request.GET: - try: - m = Marker.objects.get(pk=request.GET['current_feature']) - if m.route: - response_dct['current_route'] = m.route.pk - except: - pass + if request.GET and "current_feature" in request.GET: + item_key = request.GET['current_feature'] + current_cls = None + for cls in (Marker, Polygon, Route): + if item_key.startswith(cls.__name__.lower() + '-'): + current_cls = cls + break + if current_cls: + try: + response_dct["current_feature"] = current_cls.objects.get( + status='A', + pk=item_key[len(current_cls.geom_attr + '-') + 1:]) + except current_cls.DoesNotExist: + pass + if request.GET and "ty" in request.GET: + response_dct['tiny'] = request.GET["ty"] response_dct.update({ 'actions': actions(response_dct['area_name']), 'action_selected': ('view',), @@ -195,7 +208,6 @@ def index(request, area_name=None, default_area=None, simple=False, 'dynamic_categories': response_dct['dynamic_categories'], 'zoomout': zoomout, 'has_default_area': Area.objects.filter(default=True).count(), - 'zoomout': zoomout, 'has_search': hasattr(settings, 'CHIMERE_SEARCH_ENGINE') and settings.CHIMERE_SEARCH_ENGINE }) @@ -909,9 +921,9 @@ def getCategory(request, area_name='', category_id=0): def getTinyfiedUrl(request, parameters, area_name=''): - ''' + """ Get the tinyfied version of parameters - ''' + """ data = {"urn": "", "url": "", "text": ""} try: urn = TinyUrl.getUrnByParameters(parameters) @@ -943,11 +955,21 @@ def redirectFromTinyURN(request, area_name='', tiny_urn=''): """ Redirect from a tiny Urn """ - parameters = '#' + TinyUrl.getParametersByUrn(tiny_urn) + parameters = TinyUrl.getParametersByUrn(tiny_urn) + + detail = parameters.split(';') + current_item = None + if len(detail) >= 5: + current_item = detail[4] + response_dct, redir = get_base_response(request, area_name) if redir: return redir - return HttpResponseRedirect(response_dct['extra_url'] + parameters) + redir_url = response_dct['extra_url'] + "?ty={}".format(tiny_urn) + if current_item: + redir_url += "¤t_feature={}".format(current_item) + redir_url += "#" + parameters + return HttpResponseRedirect(redir_url) class CategoryDirectoryView(ListView): |