summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/forms.py4
-rw-r--r--ishtar_common/widgets.py17
2 files changed, 18 insertions, 3 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 043b03f61..42d74f9ef 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -33,6 +33,7 @@ from django.utils.translation import ugettext_lazy as _
import models
import widgets
+from wizards import MultiValueDict
# from formwizard.forms import NamedUrlSessionFormWizard
@@ -224,7 +225,6 @@ class ManageOldType(object):
if prefix not in k:
continue
new_k = k[len(prefix) + 1:]
- items = []
if hasattr(kwargs['data'], 'getlist'):
items = kwargs['data'].getlist(k)
else:
@@ -238,7 +238,6 @@ class ManageOldType(object):
if 'initial' in kwargs and kwargs['initial']:
for k in kwargs['initial']:
if k not in self.init_data or not self.init_data[k]:
- items = []
if hasattr(kwargs['initial'], 'getlist'):
items = kwargs['initial'].getlist(k)
else:
@@ -249,6 +248,7 @@ class ManageOldType(object):
if k not in self.init_data:
self.init_data[k] = []
self.init_data[k].append(val)
+ self.init_data = MultiValueDict(self.init_data)
super(ManageOldType, self).__init__(*args, **kwargs)
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index e21ce7a2a..7696d67da 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -24,7 +24,8 @@ from django.conf import settings
from django.core.urlresolvers import reverse
from django.db.models import fields
from django.forms import ClearableFileInput
-from django.forms.widgets import flatatt
+from django.forms.widgets import flatatt, \
+ CheckboxSelectMultiple as CheckboxSelectMultipleBase
from django.template import Context, loader
from django.template.defaultfilters import slugify
from django.utils.encoding import smart_unicode
@@ -56,6 +57,20 @@ class Select2Multiple(forms.SelectMultiple):
return super(Select2Multiple, self).render(name, value, attrs,
choices)
+class CheckboxSelectMultiple(CheckboxSelectMultipleBase):
+ """
+ Fix initialization bug.
+ Should be corrected on recent Django version.
+ TODO: test and remove (test case: treatment type not keep on modif)
+ """
+ def render(self, name, value, attrs=None, choices=()):
+ if type(value) in (str, unicode):
+ value = value.split(',')
+ if type(value) not in (list, tuple):
+ value = [value]
+ return super(CheckboxSelectMultiple, self).render(name, value, attrs,
+ choices)
+
class MultipleAutocompleteField(forms.MultipleChoiceField):
def __init__(self, *args, **kwargs):