diff options
| 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 |
| commit | 1feeb42a1f12811106764ef8203bfe1a10362fb8 (patch) | |
| tree | b275800b96119265c55cc159f3a7fe41516b7ff7 /chimere/views.py | |
| parent | d63c56a5f8350c61117efec402b3ae67cc4c5a9b (diff) | |
| download | Chimè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.py | 21 |
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 |
