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.py26
1 files changed, 23 insertions, 3 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index bb743372d..aa5f789a2 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -809,14 +809,34 @@ class DocumentGenerationAdminActForm(forms.Form):
document_template = forms.ChoiceField(label=_("Template"), choices=[])
def __init__(self, *args, **kwargs):
- document_type = 'O'
+ self.document_type = 'O'
if 'operation' in kwargs:
- document_type = 'O' if kwargs.pop('operation') else 'F'
+ self.document_type = 'O' if kwargs.pop('operation') else 'F'
+ self.obj = None
+ if 'obj' in kwargs:
+ self.obj = kwargs.pop('obj')
super(DocumentGenerationAdminActForm, self).__init__(*args, **kwargs)
self.fields['document_template'].choices = DocumentTemplate.get_tuples(
dct={'associated_object_name':
'archaeological_operations.models.AdministrativeAct',
- 'acttypes__intented_to':document_type})
+ 'acttypes__intented_to':self.document_type})
+
+ def clean(self):
+ if not self.obj:
+ raise forms.ValidationError(_(u"You should select an administrative"
+ " act."))
+ cleaned_data = self.cleaned_data
+ try:
+ dt = DocumentTemplate.objects.get(
+ pk=self.cleaned_data['document_template'])
+ except DocumentTemplate.DoesNotExist:
+ raise forms.ValidationError(_(u"This document is not intended for "
+ u"this type of act."))
+ if self.obj.act_type.pk not in [act_type.pk
+ for act_type in dt.acttypes.all()]:
+ raise forms.ValidationError(_(u"This document is not intended for "
+ u"this type of act."))
+ return cleaned_data
def save(self, object_pk):
try: