diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-09-14 20:53:46 +0200 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-09-14 21:22:44 +0200 |
| commit | 518abc0e4a66c2bca84f87d162e91a6d66094621 (patch) | |
| tree | f882d6ef930f199b56922002e27bce782b8f6ef0 /chimere/main | |
| parent | cff7402788e9c9399a5e7997fbb529dfa9705103 (diff) | |
| download | Chimère-518abc0e4a66c2bca84f87d162e91a6d66094621.tar.bz2 Chimère-518abc0e4a66c2bca84f87d162e91a6d66094621.zip | |
Allow route submission from a simple page (closes #303)
Diffstat (limited to 'chimere/main')
| -rw-r--r-- | chimere/main/forms.py | 6 | ||||
| -rw-r--r-- | chimere/main/views.py | 35 |
2 files changed, 33 insertions, 8 deletions
diff --git a/chimere/main/forms.py b/chimere/main/forms.py index 7b7fc05..2337644 100644 --- a/chimere/main/forms.py +++ b/chimere/main/forms.py @@ -268,6 +268,12 @@ class FileForm(forms.Form): u"GPX or KML file")) return data +class FullFileForm(FileForm): + name = forms.CharField(label=_(u"Name")) + def __init__(self, *args, **kwargs): + super(FullFileForm, self).__init__(*args, **kwargs) + self.fields.keyOrder = ['name', 'raw_file'] + class AreaAdminForm(forms.ModelForm): """ Admin page to create an area 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)) |
