diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-10-20 21:52:43 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-10-20 21:52:43 +0200 | 
| commit | 8d594a01220d5cbbe9d6e856d1aef04bbb8daf3e (patch) | |
| tree | 1f1887c1153c40cd4323c482856e5f281ec1dc97 /archaeological_warehouse/wizards.py | |
| parent | 980bf7d6c548f09636b94fd53e575ab8c2e10d2e (diff) | |
| download | Ishtar-8d594a01220d5cbbe9d6e856d1aef04bbb8daf3e.tar.bz2 Ishtar-8d594a01220d5cbbe9d6e856d1aef04bbb8daf3e.zip | |
Djangoization - Major refactoring (step 6)
Work on wizard, views and forms to dispatch logic in a more
relevant way.
Diffstat (limited to 'archaeological_warehouse/wizards.py')
| -rw-r--r-- | archaeological_warehouse/wizards.py | 48 | 
1 files changed, 48 insertions, 0 deletions
| diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py new file mode 100644 index 000000000..1e8455b94 --- /dev/null +++ b/archaeological_warehouse/wizards.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright (C) 2012  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program.  If not, see <http://www.gnu.org/licenses/>. + +# See the file COPYING for details. + +from django.shortcuts import render_to_response +from django.template import RequestContext +from django.utils.translation import ugettext_lazy as _ + +from archaeological_finds.wizards import TreatmentWizard +from archaeological_finds.models import Treatment + + +class PackagingWizard(TreatmentWizard): +    def save_model(self, dct, m2m, whole_associated_models, request, storage, +                   form_list, return_object): +        dct = self.get_extra_model(dct, request, storage, form_list) +        obj = self.get_current_saved_object(request, storage) +        dct['location'] = dct['container'].location +        items = dct.pop('items') +        treatment = Treatment(**dct) +        treatment.save() +        if not hasattr(items, '__iter__'): +            items = [items] +        for item in items: +            new = item.duplicate(request.user) +            item.downstream_treatment = treatment +            item.save() +            new.upstream_treatment = treatment +            new.container = dct['container'] +            new.save() +        res = render_to_response('wizard_done.html', {}, +                                  context_instance=RequestContext(request)) +        return return_object and (obj, res) or res | 
