diff options
Diffstat (limited to 'chimere/forms.py')
-rw-r--r-- | chimere/forms.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/chimere/forms.py b/chimere/forms.py index e3486c0..d877a22 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -124,10 +124,11 @@ class MarkerAdminFormBase(forms.ModelForm): """ Custom initialization method in order to manage properties """ + self.pms = [pm for pm in PropertyModel.objects.filter(available=True)] if 'instance' in keys and keys['instance']: instance = keys['instance'] property_dct = {} - for pm in PropertyModel.objects.filter(available=True): + for pm in self.pms: property = instance.getProperty(pm) if property: property_dct[pm.getNamedId()] = property.value @@ -147,6 +148,8 @@ class MarkerAdminFormBase(forms.ModelForm): def clean(self): ''' Verify that a start date is provided when an end date is set + Verify the mandatory properties (to be check manualy because it depends + on the checked categories) ''' if not settings.CHIMERE_DAYS_BEFORE_EVENT: return self.cleaned_data @@ -155,6 +158,19 @@ class MarkerAdminFormBase(forms.ModelForm): msg = _(u"End date has been set with no start date") self._errors["end_date"] = self.error_class([msg]) del self.cleaned_data['end_date'] + + for pm in self.pms: + if not pm.mandatory or self.cleaned_data[pm.getNamedId()]: + continue + pm_cats = pm.subcategories.all() + print self.cleaned_data['categories'] + print pm_cats + if not pm_cats or \ + [submited_cat for submited_cat in self.cleaned_data['categories'] + if submited_cat in pm_cats]: + msg = _(u"This field is mandatory for the selected categories") + self._errors[pm.getNamedId()] = self.error_class([msg]) + #raise forms.ValidationError() return self.cleaned_data def save(self, *args, **keys): |