diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-03-12 13:12:43 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-03-12 13:12:43 +0100 |
commit | f57f079c23c739550095e6f54b762f13339123e0 (patch) | |
tree | e74d6f8f503d2157b82ad160db184752ba81fa1a /chimere/forms.py | |
parent | 4c3071db2a009e41af87bfada2fcb27ffc70d474 (diff) | |
download | Chimère-f57f079c23c739550095e6f54b762f13339123e0.tar.bz2 Chimère-f57f079c23c739550095e6f54b762f13339123e0.zip |
Merge Saclay inside chimere main
Diffstat (limited to 'chimere/forms.py')
-rw-r--r-- | chimere/forms.py | 47 |
1 files changed, 29 insertions, 18 deletions
diff --git a/chimere/forms.py b/chimere/forms.py index e1e5b17..965c93c 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -409,13 +409,13 @@ class MarkerAdminFormBase(forms.ModelForm): msg = _("End date can't be before start date") self._errors["end_date"] = self.error_class([msg]) raise forms.ValidationError(msg) + categories = self.cleaned_data.get('categories', []) for pm in self.pms: if not pm.mandatory or self.cleaned_data[pm.getNamedId()]: continue pm_cats = pm.subcategories.all() if not pm_cats or \ - [submited_cat for submited_cat in - self.cleaned_data['categories'] + [submited_cat for submited_cat in categories if submited_cat in pm_cats]: msg = _("This field is mandatory for the selected categories") self._errors[pm.getNamedId()] = self.error_class([msg]) @@ -481,6 +481,8 @@ class RouteAdminForm(forms.ModelForm): name = forms.CharField(label=_("Name"), required=True) read_from_file = forms.BooleanField( label=_("Lire la géométrie depuis le fichier"), required=False) + categories = forms.ChoiceField(choices=[], widget=forms.Select) + description = forms.CharField(widget=TextareaWidget, required=False) class Meta: model = Route @@ -521,22 +523,24 @@ class RouteAdminForm(forms.ModelForm): self.fields['route'].required = False self.fields['categories'].widget = forms.SelectMultiple( choices=self.fields['categories'].choices) - return - self.fields.pop('read_from_file') - if settings.CHIMERE_DAYS_BEFORE_EVENT: - self.fields['start_date'].widget = DatePickerWidget() - self.fields['end_date'].widget = DatePickerWidget() - self.fields['categories'].choices = [] - if subcategories: - self.fields['categories'].choices = subcategories - # not a clean way to filter properties... - # to do: change creation process - pms = [pm.getNamedId() for pm in self.pms] - for k in self.fields.keys(): - if not k.startswith('property_') or \ - k in pms: - continue - self.fields.pop(k) + else: + self.fields.pop('read_from_file') + if settings.CHIMERE_DAYS_BEFORE_EVENT: + self.fields['start_date'].widget = DatePickerWidget() + self.fields['end_date'].widget = DatePickerWidget() + self.fields['categories'].choices = [] + if subcategories: + self.fields['categories'].choices = subcategories + # not a clean way to filter properties... + # to do: change creation process + pms = [pm.getNamedId() for pm in self.pms] + for k in self.fields.keys(): + if not k.startswith('property_') or \ + k in pms: + continue + self.fields.pop(k) + self.fields['categories'].widget.choices = \ + [('', _(u"Select"))] + self.fields['categories'].widget.choices def clean(self): if self.cleaned_data.get('read_from_file', None) and \ @@ -549,6 +553,13 @@ class RouteAdminForm(forms.ModelForm): "celui-ci depuis un fichier.") return self.cleaned_data + def clean_categories(self): + cats = self.cleaned_data.get('categories') + if cats: + if type(cats) not in (list, tuple): + self.cleaned_data['categories'] = [cats] + return self.cleaned_data['categories'] + def save(self, *args, **keys): """ Custom save method in order to manage associated properties |