diff options
Diffstat (limited to 'chimere/views.py')
| -rw-r--r-- | chimere/views.py | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/chimere/views.py b/chimere/views.py index f10b7fa..157a52e 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 @@ -47,7 +48,9 @@ from chimere.widgets import getMapJS, PointChooserWidget, \ RouteChooserWidget, AreaWidget from chimere.forms import MarkerForm, RouteForm, ContactForm, FileForm, \ FullFileForm, MultimediaFileFormSet, PictureFileFormSet, notifySubmission,\ - notifyStaff, AreaForm + notifyStaff, AreaForm, RoutingForm, getStaffEmails + +from chimere.route import router def get_base_uri(request): base_uri = 'http://' @@ -120,6 +123,8 @@ def index(request, area_name=None, default_area=None, simple=False): if request.GET and 'lat' in request.GET \ and 'lon' in request.GET: zoomout = None + if settings.CHIMERE_ENABLE_ROUTING: + response_dct['itinerary_form'] = RoutingForm() response_dct.update({ 'actions':actions, 'action_selected':('view',), 'error_message':'', @@ -475,6 +480,11 @@ def getDetail(request, area_name, marker_id): for network in settings.CHIMERE_SHARE_NETWORKS: share_networks.append((network[0], network[1] % net_dct, network[2])) response_dct['share_networks'] = share_networks + net_dct['to'] = ";".join(getStaffEmails()) + if net_dct['to']: + net_dct["body"] = _(settings.CHIMERE_MODIF_EMAIL) + response_dct['modif_by_email'] = 'mailto:?to=%(to)s&subject='\ + '%(text)s&body=%(body)s%(url)s' % net_dct response_dct['dated'] = settings.CHIMERE_DAYS_BEFORE_EVENT \ and marker.start_date return render_to_response('chimere/detail.html', response_dct, @@ -635,6 +645,31 @@ def redirectFromTinyURN(request, area_name='', tiny_urn=''): return redir return HttpResponseRedirect(response_dct['extra_url'] + parameters) +def route(request, area_name, lon1, lat1, lonlat_steps, lon2, lat2, + transport='foot'): + ''' + Get the JSON for a route + ''' + try: + lon1, lat1 = float(lon1), float(lat1) + lon2, lat2 = float(lon2), float(lat2) + steps = [float(lonlat) for lonlat in lonlat_steps.split('_') if lonlat] + # regroup by 2 + steps = [(steps[i*2], steps[i*2+1]) for i in range(len(steps)/2)] + except ValueError: + return HttpResponse('no results') + jsons, desc, total = router.route(lon1, lat1, lon2, lat2, steps=steps, + transport=transport) + if not jsons: + return HttpResponse('no results') + jsonencoder = simplejson.JSONEncoder() + total = jsonencoder.encode(total) + desc = jsonencoder.encode(desc) + data = '{"properties":{"total":%s, "description":%s}, '\ + '"type": "FeatureCollection", "features":[%s]}' % (total, desc, + ",".join(jsons)) + return HttpResponse(data) + def rss(request, area_name=''): ''' Redirect to RSS subscription page |
