diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-08-24 16:32:15 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-08-24 16:32:15 +0200 | 
| commit | b7a3d284ab687b560caae45b9ca5ac8bf8c8b46d (patch) | |
| tree | 7e8d47e3370d8a213ca9888e5645bf51ea788ea0 /archaeological_operations/forms.py | |
| parent | 3eff8cc19f8f8ef237788c752cb7c937195bb7e6 (diff) | |
| download | Ishtar-b7a3d284ab687b560caae45b9ca5ac8bf8c8b46d.tar.bz2 Ishtar-b7a3d284ab687b560caae45b9ca5ac8bf8c8b46d.zip | |
Administrativ act: can modify index (refs #2248)
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?") | 
