summaryrefslogtreecommitdiff
path: root/chimere/forms.py
diff options
context:
space:
mode:
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
commitf57f079c23c739550095e6f54b762f13339123e0 (patch)
treee74d6f8f503d2157b82ad160db184752ba81fa1a /chimere/forms.py
parent4c3071db2a009e41af87bfada2fcb27ffc70d474 (diff)
downloadChimère-f57f079c23c739550095e6f54b762f13339123e0.tar.bz2
Chimère-f57f079c23c739550095e6f54b762f13339123e0.zip
Merge Saclay inside chimere main
Diffstat (limited to 'chimere/forms.py')
-rw-r--r--chimere/forms.py47
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