summaryrefslogtreecommitdiff
path: root/chimere/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-08-15 01:38:28 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-08-22 02:03:18 +0200
commit1feeb42a1f12811106764ef8203bfe1a10362fb8 (patch)
treeb275800b96119265c55cc159f3a7fe41516b7ff7 /chimere/views.py
parentd63c56a5f8350c61117efec402b3ae67cc4c5a9b (diff)
downloadChimère-1feeb42a1f12811106764ef8203bfe1a10362fb8.tar.bz2
Chimère-1feeb42a1f12811106764ef8203bfe1a10362fb8.zip
First working version of routing.
* add an utilitary Routing class to manage different routing system * implement the routing with routino * add a view to manage routes * itinerary panel template * JS management of routing: * manage flag markers on the map * request the route when start and finish flag are set * display the route and the itinerary description * add of two flags images * itinerary panel CSS * french translation update
Diffstat (limited to 'chimere/views.py')
-rw-r--r--chimere/views.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/chimere/views.py b/chimere/views.py
index f61e209..ad4b0ca 100644
--- a/chimere/views.py
+++ b/chimere/views.py
@@ -26,6 +26,7 @@ Views of the project
import datetime
from itertools import groupby
+import simplejson
from django.conf import settings
from django.core import serializers
@@ -49,6 +50,8 @@ from chimere.forms import MarkerForm, RouteForm, ContactForm, FileForm, \
FullFileForm, MultimediaFileFormSet, PictureFileFormSet, notifySubmission,\
notifyStaff, AreaForm
+from chimere.route import router
+
def get_base_uri(request):
base_uri = 'http://'
if 'HTTP_REFERER' in request.META:
@@ -635,6 +638,24 @@ def redirectFromTinyURN(request, area_name='', tiny_urn=''):
return redir
return HttpResponseRedirect(response_dct['extra_url'] + parameters)
+def route(request, area_name, lon1, lat1, lon2, lat2, transport='foot'):
+ '''
+ Get the JSON for a route
+ '''
+ try:
+ lon1, lat1 = float(lon1), float(lat1)
+ lon2, lat2 = float(lon2), float(lat2)
+ except ValueError:
+ return HttpResponse('no results')
+ jsons, desc = router.route(lon1, lat1, lon2, lat2, transport=transport,
+ session_id=request.session.session_key)
+ if not jsons:
+ return HttpResponse('no results')
+ jsonencoder = simplejson.JSONEncoder()
+ data = '{"properties":{"description":%s}, "type": "FeatureCollection",'\
+ '"features":[%s]}' % (jsonencoder.encode(desc), ",".join(jsons))
+ return HttpResponse(data)
+
def rss(request, area_name=''):
'''
Redirect to RSS subscription page