summaryrefslogtreecommitdiff
path: root/archaeological_operations/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations/forms.py')
-rw-r--r--archaeological_operations/forms.py43
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?")