diff options
Diffstat (limited to 'archaeological_operations/forms.py')
-rw-r--r-- | archaeological_operations/forms.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 67cc8892d..d2303a43b 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -1285,6 +1285,49 @@ class AdministrativeActOpeForm(forms.Form): dct={'intented_to': 'O'}) +class AdministrativeActModifForm(object): + def __init__(self, *args, **kwargs): + super(AdministrativeActModifForm, self).__init__(*args, **kwargs) + self.fields.keyOrder = list(self.fields.keyOrder) + self.fields.keyOrder.pop(self.fields.keyOrder.index( + 'index')) + self.fields.keyOrder.insert( + self.fields.keyOrder.index("signature_date") + 1, 'index') + + def clean(self): + # manage unique act ID + year = self.cleaned_data.get("signature_date") + if not year or not hasattr(year, 'year'): + return self.cleaned_data + year = year.year + index = self.cleaned_data.get("index", None) + if not index: + return self.cleaned_data + items = models.AdministrativeAct.objects.filter( + year=year, index=index) + if 'pk' in self.cleaned_data and self.cleaned_data['pk']: + items = items.exclude(pk=self.cleaned_data['pk']) + if items.count(): + max_val = models.AdministrativeAct.objects.filter( + year=year).aggregate(Max('index'))["index__max"] + msg = '' + if year and max_val: + msg = _( + u"This index already exist for year: %(year)d - use a " + u"value bigger than %(last_val)d") % { + 'year': year, 'last_val': max_val} + else: + msg = _(u"Bad index") + raise forms.ValidationError(msg) + return self.cleaned_data + + +class AdministrativeActOpeModifForm(AdministrativeActModifForm, + AdministrativeActOpeForm): + pk = forms.IntegerField(required=False, widget=forms.HiddenInput) + index = forms.IntegerField(label=_("Index"), required=False) + + class FinalAdministrativeActDeleteForm(FinalForm): confirm_msg = " " confirm_end_msg = _(u"Would you like to delete this administrative act?") |