diff options
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 |
commit | 75f27ba450a1658605c12255298769192d9483a0 (patch) | |
tree | 0fa56b7f5a6c9b65a61d711ae817f46cb04f45e4 /chimere/forms.py | |
parent | cfac5917a5677bfac99d57441c3be98e65d4be15 (diff) | |
download | Chimè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.py | 20 |
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 |