summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_files/forms.py10
-rw-r--r--archaeological_files/views.py4
-rw-r--r--archaeological_operations/forms.py43
-rw-r--r--archaeological_operations/views.py2
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',)