summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/wizards.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_warehouse/wizards.py')
-rw-r--r--archaeological_warehouse/wizards.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py
index 62b441e00..407a58ad6 100644
--- a/archaeological_warehouse/wizards.py
+++ b/archaeological_warehouse/wizards.py
@@ -17,12 +17,16 @@
# 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
+from ishtar_common.wizards import Wizard
from archaeological_finds.wizards import TreatmentWizard
from archaeological_finds.models import Treatment
+import models
+
class PackagingWizard(TreatmentWizard):
basket_step = 'base-packaging'
@@ -40,3 +44,65 @@ class PackagingWizard(TreatmentWizard):
res = render_to_response('ishtar/wizard/wizard_done.html', {},
context_instance=RequestContext(self.request))
return return_object and (obj, res) or res
+
+
+class WarehouseWizard(Wizard):
+ model = models.Warehouse
+
+
+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))