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 | |
parent | cff7402788e9c9399a5e7997fbb529dfa9705103 (diff) | |
download | Chimère-518abc0e4a66c2bca84f87d162e91a6d66094621.tar.bz2 Chimère-518abc0e4a66c2bca84f87d162e91a6d66094621.zip |
Allow route submission from a simple page (closes #303)
-rw-r--r-- | chimere/locale/fr/LC_MESSAGES/django.po | 36 | ||||
-rw-r--r-- | chimere/main/forms.py | 6 | ||||
-rw-r--r-- | chimere/main/views.py | 35 | ||||
-rw-r--r-- | chimere/templates/upload_file.html | 8 | ||||
-rw-r--r-- | chimere/urls.py | 5 |
5 files changed, 63 insertions, 27 deletions
diff --git a/chimere/locale/fr/LC_MESSAGES/django.po b/chimere/locale/fr/LC_MESSAGES/django.po index 88648e4..6ea015d 100644 --- a/chimere/locale/fr/LC_MESSAGES/django.po +++ b/chimere/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-09-11 18:13+0200\n" +"POT-Creation-Date: 2011-09-14 20:43+0200\n" "PO-Revision-Date: 2010-03-20 20:00+0100\n" "Last-Translator: Étienne Loks <etienne.loks@peacefrogs.net>\n" "MIME-Version: 1.0\n" @@ -76,16 +76,16 @@ msgstr "Fichier" msgid "Bad file format: this must be a GPX or KML file" msgstr "Mauvais format de fichier : KML et GPX sont supportés" -#: main/forms.py:275 main/models.py:554 -msgid "Area" -msgstr "Zone" - -#: main/models.py:42 main/models.py:95 main/models.py:116 main/models.py:129 -#: main/models.py:143 main/models.py:193 main/models.py:315 main/models.py:368 -#: main/models.py:538 main/models.py:580 +#: main/forms.py:272 main/models.py:42 main/models.py:95 main/models.py:116 +#: main/models.py:129 main/models.py:143 main/models.py:193 main/models.py:315 +#: main/models.py:368 main/models.py:538 main/models.py:580 msgid "Name" msgstr "Nom" +#: main/forms.py:281 main/models.py:554 +msgid "Area" +msgstr "Zone" + #: main/models.py:43 main/models.py:117 main/models.py:144 main/models.py:201 #: main/models.py:378 main/models.py:542 main/models.py:582 msgid "Available" @@ -268,11 +268,11 @@ msgstr "Valeur" msgid "Property" msgstr "Propriété" -#: main/views.py:274 +#: main/views.py:290 msgid "Comments/request on the map" msgstr "Commentaires/requètes sur la carte" -#: main/views.py:277 +#: main/views.py:293 msgid "" "Thank you for your contribution. It will be taken into account. If you have " "left your email you may be contacted soon for more details." @@ -281,11 +281,11 @@ msgstr "" "laissé votre courriel vous serez peut-être contacté bientôt pour plus de " "détails." -#: main/views.py:281 +#: main/views.py:297 msgid "Temporary error. Renew your message later." msgstr "Erreur temporaire. Réenvoyez votre message plus tard." -#: main/views.py:390 +#: main/views.py:409 msgid "No category available in this area." msgstr "Pas de catégorie disponible sur cette zone." @@ -380,7 +380,7 @@ msgstr "ou" msgid "Start \"hand\" drawing" msgstr "Commencer le tracé manuellement" -#: main/widgets.py:335 +#: main/widgets.py:334 msgid "Select..." msgstr "Sélectionner..." @@ -444,7 +444,7 @@ msgstr "Page non trouvée" msgid "Internal server error" msgstr "Erreur interne du serveur" -#: templates/base.html:39 +#: templates/base.html:40 msgid "This site uses Chimère" msgstr "Ce site utilise Chimère" @@ -462,7 +462,7 @@ msgid "Display markers and routes waiting for validation" msgstr "" "Afficher les points remarquables et les trajets en attente de validation" -#: templates/category_detail.html:6 templates/welcome.html:23 +#: templates/category_detail.html:6 templates/welcome.html:47 msgid "Close" msgstr "Fermer" @@ -549,7 +549,11 @@ msgstr "" msgid "Upload a file" msgstr "Déposer un fichier" -#: templates/upload_file.html:41 +#: templates/upload_file.html:42 +msgid "Thank you for your submission!" +msgstr "Merci pour votre proposition !" + +#: templates/upload_file.html:47 msgid "Upload" msgstr "Déposer" 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)) diff --git a/chimere/templates/upload_file.html b/chimere/templates/upload_file.html index b6e8d40..50c1150 100644 --- a/chimere/templates/upload_file.html +++ b/chimere/templates/upload_file.html @@ -16,8 +16,14 @@ </head> <body class='window'> <div> +{% if thanks %} +<div class='warning'> +<p>{% trans "Thank you for your submission!"%}</p> +</div> +{% endif %} <fieldset class='edit'> <legend>{% trans "Upload a file" %}</legend> +{% if category %}<h3>{{category}}</h3>{% endif %} <div class="fieldWrapper"> {% if gpx_id %} <script type="text/javascript"><!-- @@ -36,7 +42,7 @@ }); // --></script> {% else %} -<form enctype="multipart/form-data" method='post' action='{{extra_url}}upload_file/'> +<form enctype="multipart/form-data" method='post' action='.'> {{ form }} <p><input type='submit' value="{% trans 'Upload'%}"/></p> </form> diff --git a/chimere/urls.py b/chimere/urls.py index 4d62bac..41a3729 100644 --- a/chimere/urls.py +++ b/chimere/urls.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 @@ -67,7 +67,8 @@ urlpatterns += patterns('chimere.main.views', (BASE + EXTRA + r'contact/$', 'contactus', default_dct), (BASE + EXTRA + r'edit/$', 'edit', default_dct), (BASE + EXTRA + r'edit_route/$', 'editRoute', default_dct), -(BASE + EXTRA + r'upload_file/$', 'uploadFile', default_dct), +(BASE + EXTRA + r'upload_file/((?P<category_id>\w+)/)?$', 'uploadFile', + default_dct), (BASE + EXTRA + r'process_route_file/(?P<file_id>\d+)/$', 'processRouteFile', default_dct), (BASE + EXTRA + r'submited/(?P<action>\w+)/$', 'submited', default_dct), (BASE + EXTRA + r'getDetail/(?P<marker_id>\d+)/$', 'getDetail', default_dct), |