summaryrefslogtreecommitdiff
path: root/chimere/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/forms.py')
-rw-r--r--chimere/forms.py18
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):