summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/wizards.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-12-14 18:35:10 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-12-14 18:35:10 +0100
commitecdea8b34ba6047147a449623737dcd2c0aee376 (patch)
treee8767720105986ada8de3a12b8fd33ebf36ffb90 /archaeological_warehouse/wizards.py
parent8f8e446022e9dd508572c92ed5244397e2225087 (diff)
downloadIshtar-ecdea8b34ba6047147a449623737dcd2c0aee376.tar.bz2
Ishtar-ecdea8b34ba6047147a449623737dcd2c0aee376.zip
Manage container localisation
Diffstat (limited to 'archaeological_warehouse/wizards.py')
-rw-r--r--archaeological_warehouse/wizards.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py
index f5aee5c1e..407a58ad6 100644
--- a/archaeological_warehouse/wizards.py
+++ b/archaeological_warehouse/wizards.py
@@ -17,6 +17,7 @@
# See the file COPYING for details.
+from django.contrib.formtools.wizard.views import NamedUrlWizardView
from django.shortcuts import render_to_response
from django.template import RequestContext
@@ -52,3 +53,56 @@ class WarehouseWizard(Wizard):
class WarehouseModificationWizard(Wizard):
model = models.Warehouse
modification = True
+
+
+class LocalisationWizard(Wizard):
+ wizard_templates = {
+ 'localisation-container_localisation':
+ 'ishtar/wizard/wizard_containerlocalisation.html',
+ }
+
+ def get_form_kwargs(self, step=None):
+ kwargs = super(LocalisationWizard, self).get_form_kwargs(step)
+ if step == 'localisation-container_localisation':
+ container = None
+ container_pk = self.session_get_value(
+ 'seleccontainer-container_localisation', 'container')
+ q = models.Container.objects.filter(pk=container_pk)
+ if q.count():
+ container = q.all()[0]
+ kwargs['container'] = container
+ return kwargs
+
+ def done(self, form_list, **kwargs):
+ """
+ Save the localisation
+ """
+ container = None
+ for idx, form in enumerate(form_list):
+ if not form.is_valid():
+ return self.render(form)
+ if not idx: # container form
+ try:
+ container = models.Container.objects.get(
+ pk=form.cleaned_data['container'])
+ except models.Container.DoesNotExist:
+ return self.render(form)
+ elif idx == 1: # localisation form
+ for div_name in form.cleaned_data:
+ try:
+ division = models.WarehouseDivisionLink.objects.get(
+ pk=div_name.split('_')[-1],
+ warehouse=container.location
+ ) # check the localisation match with the container
+ except models.WarehouseDivisionLink.DoesNotExist:
+ return self.render(form)
+ localisation, created = \
+ models.ContainerLocalisation.objects.get_or_create(
+ container=container,
+ division=division
+ )
+ localisation.reference = form.cleaned_data[div_name]
+ localisation.save()
+ return render_to_response(
+ self.wizard_done_template, {},
+ context_instance=RequestContext(self.request))