From 75f27ba450a1658605c12255298769192d9483a0 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 12 Apr 2017 13:25:03 +0200 Subject: Admin: allow to manage route directly with a GPX file --- chimere/forms.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'chimere/forms.py') 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 -- cgit v1.2.3