diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/forms.py | 4 | ||||
| -rw-r--r-- | ishtar_common/widgets.py | 17 | 
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):  | 
