summaryrefslogtreecommitdiff
path: root/chimere/forms.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-04-12 13:25:03 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-04-12 13:25:03 +0200
commit75f27ba450a1658605c12255298769192d9483a0 (patch)
tree0fa56b7f5a6c9b65a61d711ae817f46cb04f45e4 /chimere/forms.py
parentcfac5917a5677bfac99d57441c3be98e65d4be15 (diff)
downloadChimère-75f27ba450a1658605c12255298769192d9483a0.tar.bz2
Chimère-75f27ba450a1658605c12255298769192d9483a0.zip
Admin: allow to manage route directly with a GPX file
Diffstat (limited to 'chimere/forms.py')
-rw-r--r--chimere/forms.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/chimere/forms.py b/chimere/forms.py
index 33da85d..352a7b1 100644
--- a/chimere/forms.py
+++ b/chimere/forms.py
@@ -469,10 +469,15 @@ class RouteAdminForm(forms.ModelForm):
"""
is_admin = True
name = forms.CharField(label=_("Name"), required=True)
+ read_from_file = forms.BooleanField(
+ label=_("Lire la géométrie depuis le fichier"), required=False)
class Meta:
model = Route
exclude = []
+ widgets = {
+ 'categories': forms.SelectMultiple
+ }
def __init__(self, *args, **keys):
"""
@@ -500,7 +505,11 @@ class RouteAdminForm(forms.ModelForm):
if 'subcategories' in keys else []
super(RouteAdminForm, self).__init__(*args, **keys)
if self.is_admin:
+ self.fields['route'].required = False
+ self.fields['categories'].widget = forms.SelectMultiple(
+ choices=self.fields['categories'].choices)
return
+ self.fields.pop('read_from_file')
if not settings.CHIMERE_SEARCH_ENGINE and 'keywords' in self.fields:
self.fields.pop('keywords')
if settings.CHIMERE_DAYS_BEFORE_EVENT:
@@ -518,6 +527,17 @@ class RouteAdminForm(forms.ModelForm):
continue
self.fields.pop(k)
+ def clean(self):
+ if self.cleaned_data.get('read_from_file', None) and \
+ self.cleaned_data.get('associated_file', None):
+ self.cleaned_data['associated_file'].process()
+ self.cleaned_data['route'] = \
+ self.cleaned_data['associated_file'].route
+ if not self.cleaned_data.get('route', None):
+ raise forms.ValidationError("Vous devez rentrer un trajet ou lire "
+ "celui-ci depuis un fichier.")
+ return self.cleaned_data
+
def save(self, *args, **keys):
"""
Custom save method in order to manage associated properties