summaryrefslogtreecommitdiff
path: root/ishtar_common/wizards.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/wizards.py')
-rw-r--r--ishtar_common/wizards.py30
1 files changed, 27 insertions, 3 deletions
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index 55c9d0d9d..a237fb327 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -24,12 +24,22 @@ from django.contrib.formtools.wizard.views import NamedUrlWizardView
from django.core.exceptions import ObjectDoesNotExist
from django.core.files.images import ImageFile
from django.db.models.fields.files import FileField
+from django.db.models.fields.related import ManyToManyField
from django.shortcuts import render_to_response
from django.template import RequestContext
-from django.utils.datastructures import MultiValueDict
+from django.utils.datastructures import MultiValueDict as BaseMultiValueDict
from django.utils.translation import ugettext_lazy as _
import models
+class MultiValueDict(BaseMultiValueDict):
+ def get(self, *args, **kwargs):
+ v = super(MultiValueDict, self).getlist(*args, **kwargs)
+ if len(v) > 1:
+ v = ",".join(v)
+ else:
+ v = super(MultiValueDict, self).get(*args, **kwargs)
+ return v
+
class Wizard(NamedUrlWizardView):
model = None
label = ''
@@ -211,7 +221,8 @@ class Wizard(NamedUrlWizardView):
if type(value) in (tuple, list):
values = value
elif "," in unicode(value):
- values = unicode(value).split(",")
+ values = unicode(value
+ ).strip('[').strip(']').split(",")
else:
values = [value]
rendered_values = []
@@ -344,6 +355,12 @@ class Wizard(NamedUrlWizardView):
isinstance(obj.__class__._meta.get_field(k), ImageFile)):
if not dct[k]:
dct[k] = None
+ if isinstance(obj.__class__._meta.get_field(k),
+ ManyToManyField):
+ if not dct[k]:
+ dct[k] = []
+ elif type(dct[k]) not in (list, tuple):
+ dct[k] = [dct[k]]
setattr(obj, k, dct[k])
try:
obj.full_clean()
@@ -516,7 +533,8 @@ class Wizard(NamedUrlWizardView):
elif hasattr(form, 'extra_form') and hasattr(form.extra_form, 'fields')\
and form.extra_form.fields.keys():
frm = form.extra_form
- elif hasattr(form, 'forms') and form.forms and form.forms[0].fields.keys():
+ elif hasattr(form, 'forms') and form.forms \
+ and form.forms[0].fields.keys():
frm = form.forms[0]
if frm:
first_field = frm.fields[frm.fields.keyOrder[0]]
@@ -675,6 +693,12 @@ class Wizard(NamedUrlWizardView):
value = obj
break
value = getattr(value, field)
+ if hasattr(value, 'all') and callable(value.all):
+ if not value.count():
+ continue
+ initial.setlist(base_field,
+ [unicode(v.pk) for v in value.all()])
+ continue
if value == obj:
continue
if hasattr(value, 'pk'):