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 | 5b8c7201eefa8b404afb0cb89b389fd3e8f92899 (patch) | |
tree | 1f1887c1153c40cd4323c482856e5f281ec1dc97 /archaeological_warehouse/wizards.py | |
parent | 111fb54c79daf2a1bcfe624f103f02da650e8741 (diff) | |
download | Ishtar-5b8c7201eefa8b404afb0cb89b389fd3e8f92899.tar.bz2 Ishtar-5b8c7201eefa8b404afb0cb89b389fd3e8f92899.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 |