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?") | 
