summaryrefslogtreecommitdiff
path: root/archaeological_operations
diff options
context:
space:
mode:
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
commita88467414b3b8f10c747944a798cbe20363862aa (patch)
tree7e8d47e3370d8a213ca9888e5645bf51ea788ea0 /archaeological_operations
parent988312da8273e1fb285d972b3aab9df44d74717c (diff)
downloadIshtar-a88467414b3b8f10c747944a798cbe20363862aa.tar.bz2
Ishtar-a88467414b3b8f10c747944a798cbe20363862aa.zip
Administrativ act: can modify index (refs #2248)
Diffstat (limited to 'archaeological_operations')
-rw-r--r--archaeological_operations/forms.py43
-rw-r--r--archaeological_operations/views.py2
2 files changed, 44 insertions, 1 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?")
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',)