diff options
Diffstat (limited to 'archaeological_warehouse/wizards.py')
| -rw-r--r-- | archaeological_warehouse/wizards.py | 66 | 
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))  | 
