diff options
| -rw-r--r-- | archaeological_files/views.py | 14 | ||||
| -rw-r--r-- | archaeological_operations/forms.py | 26 | ||||
| -rw-r--r-- | archaeological_operations/views.py | 20 | 
3 files changed, 39 insertions, 21 deletions
| diff --git a/archaeological_files/views.py b/archaeological_files/views.py index bd91c1040..ba640a785 100644 --- a/archaeological_files/views.py +++ b/archaeological_files/views.py @@ -206,17 +206,3 @@ file_administrativeactfile_deletion_wizard = \                        label=_(u"File: administrative act deletion"),                        url_name='file_administrativeactfile_deletion',) -def file_administrativeactfile_document(request): -    dct = {} -    if request.POST: -        dct['search_form'] = AdministrativeActFileFormSelection(request.POST) -        dct['template_form'] = DocumentGenerationAdminActForm(request.POST) -        if dct['search_form'].is_valid() and dct['template_form'].is_valid(): -            return generatedoc_administrativeactop(request, -                    dct['search_form'].cleaned_data.get('pk'), -                    dct['template_form'].cleaned_data.get('document_template')) -    else: -        dct['search_form'] = AdministrativeActFileFormSelection() -        dct['template_form'] = DocumentGenerationAdminActForm() -    return render_to_response('ishtar/administrativeact_document.html', dct, -                              context_instance=RequestContext(request)) 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: diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 182ae115e..ba66a724a 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -357,10 +357,22 @@ def administrativeactfile_document(request, operation=True):      dct = {}      if request.POST:          dct['search_form'] = search_form(request.POST) -        dct['template_form'] = DocumentGenerationAdminActForm(request.POST, -                                                          operation=operation) -        if dct['search_form'].is_valid() and dct['template_form'].is_valid(): -            return generatedoc_administrativeactop(request, +        dct['template_form'] = DocumentGenerationAdminActForm( +                                                        operation=operation) +        c_object = None +        try: +            if dct['search_form'].is_valid(): +                c_object = \ +                   DocumentGenerationAdminActForm._associated_model.objects.get( +                            pk=dct['search_form'].cleaned_data.get('pk')) +        except DocumentGenerationAdminActForm._associated_model.DoesNotExist: +            pass +        if c_object: +            dct['template_form'] = DocumentGenerationAdminActForm(request.POST, +                                operation=operation, +                                obj=c_object) +            if dct['template_form'].is_valid(): +                return generatedoc_administrativeactop(request,                      dct['search_form'].cleaned_data.get('pk'),                      dct['template_form'].cleaned_data.get('document_template'))      else: | 
