summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit518abc0e4a66c2bca84f87d162e91a6d66094621 (patch)
treef882d6ef930f199b56922002e27bce782b8f6ef0
parentcff7402788e9c9399a5e7997fbb529dfa9705103 (diff)
downloadChimè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.po36
-rw-r--r--chimere/main/forms.py6
-rw-r--r--chimere/main/views.py35
-rw-r--r--chimere/templates/upload_file.html8
-rw-r--r--chimere/urls.py5
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),