summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/wizards.py
diff options
context:
space:
mode:
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
commit8d594a01220d5cbbe9d6e856d1aef04bbb8daf3e (patch)
tree1f1887c1153c40cd4323c482856e5f281ec1dc97 /archaeological_warehouse/wizards.py
parent980bf7d6c548f09636b94fd53e575ab8c2e10d2e (diff)
downloadIshtar-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.py48
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