summaryrefslogtreecommitdiff
path: root/ishtar_common/wizards.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-10-21 15:04:28 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-10-21 15:04:28 +0200
commit038b12ea13407d69fbbe8f0fae3067aa55f1f763 (patch)
treea8d881b59447269f2e92578cf5924759bad17704 /ishtar_common/wizards.py
parentea73bf44c5d527f407c89b35b22b21abf2f32617 (diff)
downloadIshtar-038b12ea13407d69fbbe8f0fae3067aa55f1f763.tar.bz2
Ishtar-038b12ea13407d69fbbe8f0fae3067aa55f1f763.zip
Djangoization - Major refactoring (step 8)
* clean-up on request and storage args in methods * view creation now managed by South * clean some mess in session values by using MultiValueDict
Diffstat (limited to 'ishtar_common/wizards.py')
-rw-r--r--ishtar_common/wizards.py48
1 files changed, 24 insertions, 24 deletions
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index 7895d98e3..e423b834e 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -24,8 +24,8 @@ from django.contrib.formtools.wizard.views import NamedUrlWizardView
from django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import render_to_response
from django.template import RequestContext
+from django.utils.datastructures import MultiValueDict
from django.utils.translation import ugettext_lazy as _
-
import models
class Wizard(NamedUrlWizardView):
@@ -134,7 +134,7 @@ class Wizard(NamedUrlWizardView):
# check if the form is initialized otherwise initialize it
if not storage.get_step_data(next_step):
values = self.get_form_initial(next_step)
- prefixed_values = {}
+ prefixed_values = MultiValueDict()
if not isinstance(values, list):
for key in values:
form_key = next_step + '-' + key
@@ -525,12 +525,13 @@ class Wizard(NamedUrlWizardView):
request.POST = post_data
return super(Wizard, self).post(*args, **kwargs)
- @classmethod
- def session_has_key(cls, request, storage, form_key, key=None, multi=None):
+ def session_has_key(self, form_key, key=None, multi=None):
"""Check if the session has value of a specific form and (if provided)
of a key
"""
print "17"
+ request = self.request
+ storage = self.storage
test = storage.prefix in request.session \
and 'step_data' in request.session[storage.prefix] \
and form_key in request.session[storage.prefix]['step_data']
@@ -541,12 +542,13 @@ class Wizard(NamedUrlWizardView):
form_key + '-0-' + key #only check if the first field is available
return key in request.session[storage.prefix]['step_data'][form_key]
- @classmethod
- def session_get_value(cls, request, storage, form_key, key, multi=False):
+ def session_get_value(self, form_key, key, multi=False):
"""Get the value of a specific form"""
print "18"
- if not cls.session_has_key(request, storage, form_key, key, multi):
+ if not self.session_has_key(form_key, key, multi):
return
+ request = self.request
+ storage = self.storage
if not multi:
key = key.startswith(form_key) and key or form_key + '-' + key
return request.session[storage.prefix]['step_data'][form_key][key]
@@ -564,8 +566,7 @@ class Wizard(NamedUrlWizardView):
current_obj = None
main_form_key = 'selec-' + self.url_name
try:
- idx = self.session_get_value(self.request, self.storage,
- main_form_key, 'pk')
+ idx = self.session_get_value(main_form_key, 'pk')
if type(idx) in (tuple, list):
idx = idx[0]
idx = int(idx)
@@ -588,12 +589,12 @@ class Wizard(NamedUrlWizardView):
self.storage.reset()
val = model_name in request.session and request.session[model_name]
if val:
- return {'pk':val}
+ return MultiValueDict({'pk':val})
elif current_obj:
return self.get_instanced_init(current_obj, step)
current_form = self.form_list[current_step]
if hasattr(current_form, 'currents'):
- initial = {}
+ initial = MultiValueDict()
for key in current_form.currents:
model_name = current_form.currents[key].__name__.lower()
val = model_name in request.session and \
@@ -616,11 +617,11 @@ class Wizard(NamedUrlWizardView):
if len(prefixes) > 1 and prefixes[-2].startswith(obj_name):
obj_name = prefixes[-2]
self.request.session[obj_name] = unicode(obj.pk)
- initial = {}
+ initial = MultiValueDict()
if self.request.POST or \
(step in self.request.session[self.storage.prefix] and\
self.request.session[self.storage.prefix]['step_data'][step]):
- return {}
+ return initial
if hasattr(c_form, 'base_fields'):
for base_field in c_form.base_fields.keys():
fields = base_field.split('__')
@@ -723,11 +724,11 @@ class DeletionWizard(Wizard):
datas[0][1].append(res[field])
return datas
- def done(self, request, storage, form_list, **kwargs):
- obj = self.get_current_object(request, storage)
+ def done(self, form_list, **kwargs):
+ obj = self.get_current_object()
obj.delete()
return render_to_response('wizard_delete_done.html', {},
- context_instance=RequestContext(request))
+ context_instance=RequestContext(self.request))
class ClosingWizard(Wizard):
# "close" an item
@@ -769,15 +770,15 @@ class ClosingWizard(Wizard):
datas[0][1].append(res[field])
return datas
- def done(self, request, storage, form_list, **kwargs):
- obj = self.get_current_object(request, storage)
+ def done(self, form_list, **kwargs):
+ obj = self.get_current_object()
for form in form_list:
if form.is_valid():
if 'end_date' in form.cleaned_data and hasattr(obj, 'end_date'):
obj.end_date = form.cleaned_data['end_date']
obj.save()
return render_to_response('wizard_closing_done.html', {},
- context_instance=RequestContext(request))
+ context_instance=RequestContext(self.request))
class PersonWizard(Wizard):
model = models.Person
@@ -863,16 +864,15 @@ class AccountWizard(Wizard):
form = super(AccountWizard, self).get_form(step, data, files)
if not hasattr(form, 'is_hidden'):
return form
- if self.session_get_value(self.request, self.storage,
- 'account-account_management', 'hidden_password'):
+ if self.session_get_value('account-account_management',
+ 'hidden_password'):
form.is_hidden = False
return form
class SourceWizard(Wizard):
model = None
- def get_extra_model(self, dct, request, storage, form_list):
- dct = super(SourceWizard, self).get_extra_model(dct, request, storage,
- form_list)
+ def get_extra_model(self, dct, form_list):
+ dct = super(SourceWizard, self).get_extra_model(dct, form_list)
if 'history_modifier' in dct:
dct.pop('history_modifier')
return dct