summaryrefslogtreecommitdiff
path: root/chimere/main/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/main/views.py')
-rw-r--r--chimere/main/views.py52
1 files changed, 46 insertions, 6 deletions
diff --git a/chimere/main/views.py b/chimere/main/views.py
index 2f80ea8..812fff6 100644
--- a/chimere/main/views.py
+++ b/chimere/main/views.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2008-2010 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2008-2011 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as
@@ -31,16 +31,17 @@ from django.http import HttpResponseRedirect, HttpResponse
from django.core import serializers
from django.utils.http import urlquote
from django.db.models import Q
+from django.utils import simplejson
from chimere import settings
from chimere.main.actions import actions
-from chimere.main.models import Category, SubCategory, PropertyModel, Marker, \
- Route, News, SimpleArea, Area, Color, TinyUrl
+from chimere.main.models import Category, SubCategory, PropertyModel, \
+ Marker, Route, News, SimpleArea, Area, Color, TinyUrl, RouteFile
from chimere.main.widgets import getMapJS, PointChooserWidget, \
RouteChooserWidget, URL_OSM_JS, URL_OSM_CSS
from chimere.main.forms import MarkerForm, RouteForm, ContactForm, \
- notifySubmission, notifyStaff
+ FileForm, notifySubmission, notifyStaff
def get_base_response(area_name=""):
"""
@@ -58,6 +59,7 @@ def get_base_response(area_name=""):
if settings.CSS_AREAS and area_name:
base_response_dct['css_area'] = area_name + ".css"
base_response_dct['area_name'] = area_name
+ base_response_dct['JQUERY_URL'] = settings.JQUERY_URL
return base_response_dct
def index(request, area_name=None, default_area=None, simple=False):
@@ -124,7 +126,7 @@ def edit(request, area_name=""):
notifySubmission(marker)
response_dct = get_base_response(area_name)
return HttpResponseRedirect(response_dct['extra_url'] + \
-'submited/edit')
+ 'submited/edit')
else:
# An unbound form
form = MarkerForm()
@@ -149,6 +151,44 @@ def edit(request, area_name=""):
response_dct['current_category'] = int(form.data['subcategory'])
return render_to_response('edit.html', response_dct)
+def uploadFile(request, area_name=''):
+ response_dct = get_base_response(area_name)
+ # If the form has been submited
+ if request.method == 'POST':
+ form = FileForm(request.POST, request.FILES)
+ # All validation rules pass
+ if form.is_valid():
+ raw_file = form.cleaned_data['raw_file']
+ name = raw_file.name.split('.')[0]
+ file_type = raw_file.name.split('.')[-1][0].upper()
+ routefile = RouteFile(raw_file=raw_file, name=name,
+ file_type=file_type)
+ routefile.save()
+ response_dct = get_base_response(area_name)
+ response_dct['gpx_id'] = routefile.pk
+ return render_to_response('uploadFile.html', response_dct)
+ else:
+ # An unbound form
+ form = FileForm()
+ response_dct.update({'form':form})
+ return render_to_response('uploadFile.html', response_dct)
+
+def processRouteFile(request, area_name='', file_id=None):
+ if file_id:
+ try:
+ route_file = RouteFile.objects.get(pk=file_id)
+ route_file.process()
+ route = route_file.route
+ if not route:
+ return HttpResponse(status=500)
+ return HttpResponse(simplejson.dumps({'wkt':route}),
+ 'application/javascript', status=200)
+ except:
+ return HttpResponse(status=500)
+ else:
+ return HttpResponse(status=400)
+
+
def editRoute(request, area_name=""):
"""
Route edition page
@@ -165,7 +205,7 @@ def editRoute(request, area_name=""):
notifySubmission(route)
response_dct = get_base_response(area_name)
return HttpResponseRedirect(response_dct['extra_url'] + \
-'submited/edit')
+ 'submited/edit')
else:
# An unbound form
form = RouteForm()