diff options
| -rw-r--r-- | archaeological_files/forms.py | 10 | ||||
| -rw-r--r-- | archaeological_files/views.py | 4 | ||||
| -rw-r--r-- | archaeological_operations/forms.py | 43 | ||||
| -rw-r--r-- | archaeological_operations/views.py | 2 | 
4 files changed, 54 insertions, 5 deletions
| diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index 41381e0b8..369ffdaf0 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2010-2015  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2016  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet>  # This program is free software: you can redistribute it and/or modify  # it under the terms of the GNU Affero General Public License as @@ -37,7 +37,7 @@ from ishtar_common.forms import FinalForm, get_now, reverse_lazy, TableSelect  from ishtar_common.forms_common import get_town_field  from archaeological_operations.forms import AdministrativeActOpeForm, \      AdministrativeActOpeFormSelection, \ -    ParcelField, SLICING, HEAD_SCIENTIST, SRA_AGENT +    ParcelField, SLICING, HEAD_SCIENTIST, SRA_AGENT, AdministrativeActModifForm  from ishtar_common import widgets  GENERAL_CONTRACTOR, created = PersonType.objects.get_or_create( @@ -538,3 +538,9 @@ class AdministrativeActFileForm(AdministrativeActOpeForm):              dct={'intented_to': 'F'})          self.fields['act_type'].help_text = ActType.get_help(              dct={'intented_to': 'F'}) + + +class AdministrativeActFileModifForm(AdministrativeActModifForm, +                                     AdministrativeActFileForm): +    pk = forms.IntegerField(required=False, widget=forms.HiddenInput) +    index = forms.IntegerField(label=_("Index"), required=False) diff --git a/archaeological_files/views.py b/archaeological_files/views.py index a1b453169..7e96c33d3 100644 --- a/archaeological_files/views.py +++ b/archaeological_files/views.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2010-2015  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2016  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet>  # This program is free software: you can redistribute it and/or modify  # it under the terms of the GNU Affero General Public License as @@ -236,7 +236,7 @@ file_administrativeactfile_modification_wizard = \          ('selec-file_administrativeactfile_modification',           AdministrativeActFileModifyFormSelection),          ('administrativeact-file_administrativeactfile_modification', -         AdministrativeActFileForm), +         AdministrativeActFileModifForm),          ('final-file_administrativeactfile_modification', FinalForm)],          label=_(u"File: administrative act modification"),          url_name='file_administrativeactfile_modification',) 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?") diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 0481edae3..013e329a1 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -421,7 +421,7 @@ operation_administrativeactop_modification_wizard = \          ('selec-operation_administrativeactop_modification',           AdministrativeActOpeFormSelection),          ('administrativeact-operation_administrativeactop_modification', -         AdministrativeActOpeForm), +         AdministrativeActOpeModifForm),          ('final-operation_administrativeactop_modification', FinalForm)],          label=_(u"Operation: administrative act modification"),          url_name='operation_administrativeactop_modification',) | 
