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