diff options
Diffstat (limited to 'chimere/main/views.py')
| -rw-r--r-- | chimere/main/views.py | 35 |
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)) |
