diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-12-04 23:55:07 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-12-04 23:55:07 +0100 |
commit | 39ae57f6f233cc097d303b397b78b9bfdd9b894b (patch) | |
tree | adba76d50670728470ed11bb60e7650271f4e466 /archaeological_operations/wizards.py | |
parent | dfc53677e6fec7269e5383c410ac1cc7f259b7ea (diff) | |
download | Ishtar-39ae57f6f233cc097d303b397b78b9bfdd9b894b.tar.bz2 Ishtar-39ae57f6f233cc097d303b397b78b9bfdd9b894b.zip |
Administrativ acts: generate document from the last step of creation/modification (refs #1523)
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): |