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.py35
1 files changed, 27 insertions, 8 deletions
diff --git a/chimere/main/views.py b/chimere/main/views.py
index 05cd873..80097d1 100644
--- a/chimere/main/views.py
+++ b/chimere/main/views.py
@@ -41,7 +41,7 @@ from chimere.main.models import Category, SubCategory, PropertyModel, \
from chimere.main.widgets import getMapJS, PointChooserWidget, \
RouteChooserWidget, URL_OSM_JS, URL_OSM_CSS
from chimere.main.forms import MarkerForm, RouteForm, ContactForm, \
- FileForm, notifySubmission, notifyStaff
+ FileForm, FullFileForm, notifySubmission, notifyStaff
def get_base_response(area_name=""):
"""
@@ -151,11 +151,19 @@ 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=''):
+def uploadFile(request, category_id='', area_name=''):
response_dct = get_base_response(area_name)
+ Form = FileForm if not category_id else FullFileForm
+ category = None
+ if category_id:
+ try:
+ category = SubCategory.objects.get(pk=category_id)
+ response_dct['category'] = unicode(category)
+ except:
+ pass
# If the form has been submited
if request.method == 'POST':
- form = FileForm(request.POST, request.FILES)
+ form = Form(request.POST, request.FILES)
# All validation rules pass
if form.is_valid():
raw_file = form.cleaned_data['raw_file']
@@ -164,12 +172,20 @@ def uploadFile(request, area_name=''):
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('upload_file.html', response_dct)
+ if not category_id:
+ response_dct['gpx_id'] = routefile.pk
+ return render_to_response('upload_file.html', response_dct)
+ routefile.process()
+ route = Route(name=form.cleaned_data['name'], route=routefile.route,
+ associated_file=routefile, status='S')
+ route.save()
+ route.categories.add(category)
+ route.save()
+ response_dct['thanks'] = True
+ form = Form()
else:
# An unbound form
- form = FileForm()
+ form = Form()
response_dct.update({'form':form})
return render_to_response('upload_file.html', response_dct)
@@ -360,7 +376,10 @@ def getGeoObjects(request, area_name, category_ids, status):
idx = 0
current_cat = c_cat
colors = list(Color.objects.filter(color_theme = c_cat.color_theme))
- jsons.append(route.getGeoJSON(color=colors[idx % len(colors)].code))
+ if colors:
+ jsons.append(route.getGeoJSON(color=colors[idx % len(colors)].code))
+ else:
+ jsons.append(route.getGeoJSON(color='000'))
idx += 1
try:
q = checkDate(Q(status__in=status, categories__in=category_ids))