summaryrefslogtreecommitdiff
path: root/chimere/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-03-20 17:12:27 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-03-20 17:13:52 +0100
commit96eee66985a22619eb71cacf396ee609058459fc (patch)
treec6a21923d5e313691afc406934b37ff7ae0d1df9 /chimere/views.py
parenta489cfe6556d26af0e280d533f78c9a378cc4929 (diff)
downloadChimère-96eee66985a22619eb71cacf396ee609058459fc.tar.bz2
Chimère-96eee66985a22619eb71cacf396ee609058459fc.zip
Inform OpenGraph tags (specialy for Facebook share)
Diffstat (limited to 'chimere/views.py')
-rw-r--r--chimere/views.py56
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 += "&current_feature={}".format(current_item)
+ redir_url += "#" + parameters
+ return HttpResponseRedirect(redir_url)
class CategoryDirectoryView(ListView):