diff options
Diffstat (limited to 'archaeological_operations/wizards.py')
| -rw-r--r-- | archaeological_operations/wizards.py | 55 | 
1 files changed, 45 insertions, 10 deletions
| diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py index 07c8844b9..86af26351 100644 --- a/archaeological_operations/wizards.py +++ b/archaeological_operations/wizards.py @@ -19,6 +19,7 @@  from django.conf import settings  from django.core.exceptions import ObjectDoesNotExist +from django.core.urlresolvers import reverse  from django.db.models import Max  from django.shortcuts import render_to_response  from django.template import RequestContext @@ -27,7 +28,7 @@ from django.utils.translation import ugettext_lazy as _  from ishtar_common.wizards import Wizard, ClosingWizard, DeletionWizard, \                                    SourceWizard  import models -from forms import ParcelForm +from forms import ParcelForm, GenerateDocForm  class OperationWizard(Wizard):      model = models.Operation @@ -267,18 +268,27 @@ class OperationAdministrativeActWizard(OperationWizard):          dct['history_modifier'] = self.request.user          return dct +    def get_context_data(self, form, **kwargs): +        # manage document generation +        context = super(OperationAdministrativeActWizard, self +                                      ).get_context_data(form, **kwargs) +        step = self.steps.current +        if step.startswith('final-'): +            general_form_key = 'administrativeact-' + self.url_name +            try: +                act_type = models.ActType.objects.get( +                    pk=self.session_get_value(general_form_key, "act_type")) +            except models.ActType.DoesNotExist: +                pass +            if act_type and act_type.associated_template.count(): +                context['extra_form'] = GenerateDocForm() +        return context +      def get_associated_item(self, dct):          return self.get_current_object()      def save_model(self, dct, m2m, whole_associated_models, form_list,                     return_object): -        associated_item = self.get_associated_item(dct) -        if not associated_item: -            return self.render(form_list[-1]) -        if isinstance(associated_item, models.File): -            dct['associated_file'] = associated_item -        elif isinstance(associated_item, models.Operation): -            dct['operation'] = associated_item          dct['history_modifier'] = self.request.user          if 'pk' in dct:              dct.pop('pk') @@ -288,10 +298,35 @@ class OperationAdministrativeActWizard(OperationWizard):                  if hasattr(admact, k):                      setattr(admact, k, dct[k])          else: +            associated_item = self.get_associated_item(dct) +            if not associated_item: +                return self.render(form_list[-1]) +            if isinstance(associated_item, models.File): +                dct['associated_file'] = associated_item +            elif isinstance(associated_item, models.Operation): +                dct['operation'] = associated_item              admact = models.AdministrativeAct(**dct)          admact.save() -        res = render_to_response('ishtar/wizard/wizard_done.html', {}, -                                  context_instance=RequestContext(self.request)) +        dct['item'] = admact + +        # check if a doc generation is required +        keys = [self.storage.prefix, 'step_data', 'final-' + self.url_name, +                'doc_generation'] +        level = 0 +        r = self.request.session +        for k in keys: +            if k in r and r[k]: +                level += 1 +                r = r[k] +            else: +                break +        if level == len(keys): # the whole tree as been traversed +            # redirect to the generated doc +            dct['redirect'] = reverse('generatedoc-administrativeactop', +                                      args=[admact.pk]) + +        res = render_to_response('ishtar/wizard/wizard_done.html', dct, +                                 context_instance=RequestContext(self.request))          return res  class OperationEditAdministrativeActWizard(OperationAdministrativeActWizard): | 
