diff options
Diffstat (limited to 'ishtar_common/widgets.py')
| -rw-r--r-- | ishtar_common/widgets.py | 49 | 
1 files changed, 44 insertions, 5 deletions
| diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index 7d9e06926..5853c9675 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -224,6 +224,10 @@ class Select2Base(Select2Media):              else:                  attrs['style'] = "width: 370px" +        if value: +            if type(value) not in (list, tuple): +                value = value.split(',') +          options = ""          if self.remote:              options = """{ @@ -248,8 +252,6 @@ class Select2Base(Select2Media):              }""" % self.remote              if value:                  choices = [] -                if type(value) not in (list, tuple): -                    value = value.split(',')                  for v in value:                      try:                          choices.append((v, self.model.objects.get(pk=v))) @@ -300,7 +302,7 @@ class CheckboxSelectMultiple(CheckboxSelectMultipleBase):      def render(self, name, value, attrs=None, choices=()):          if type(value) in (str, unicode):              value = value.split(',') -        if type(value) not in (list, tuple): +        if not isinstance(value, (list, tuple)):              value = [value]          return super(CheckboxSelectMultiple, self).render(name, value, attrs) @@ -356,6 +358,14 @@ class Select2BaseField(object):  class Select2MultipleField(Select2BaseField, forms.MultipleChoiceField):      multiple = True +    def to_python(self, value): +        if not isinstance(value, (list, tuple)): +            if value: +                value = value.split(',') +            else: +                value = [] +        return super(Select2MultipleField, self).to_python(value) +  class Select2SimpleField(Select2BaseField, forms.ChoiceField):      pass @@ -470,6 +480,36 @@ class SquareMeterWidget(forms.TextInput):          return mark_safe(rendered) +class GramKilogramWidget(forms.TextInput): +    def render(self, name, value, attrs=None, renderer=None): +        if not value: +            value = u"" +        final_attrs = flatatt( +            self.build_attrs(attrs, {"name": name, "value": value})) +        dct = {'final_attrs': final_attrs, +               'unit': u"g", +               'id': attrs['id'], +               "safe_id": attrs['id'].replace('-', '_')} +        t = loader.get_template('blocks/GramKilogramWidget.html') +        rendered = t.render(dct) +        return mark_safe(rendered) + + +class CentimeterMeterWidget(forms.TextInput): +    def render(self, name, value, attrs=None, renderer=None): +        if not value: +            value = u"" +        final_attrs = flatatt( +            self.build_attrs(attrs, {"name": name, "value": value})) +        dct = {'final_attrs': final_attrs, +               'unit': u"cm", +               'id': attrs['id'], +               "safe_id": attrs['id'].replace('-', '_')} +        t = loader.get_template('blocks/CentimeterMeterWidget.html') +        rendered = t.render(dct) +        return mark_safe(rendered) + +  AreaWidget = forms.TextInput  if settings.SURFACE_UNIT == 'square-metre': @@ -927,7 +967,7 @@ class DataTable(Select2Media, forms.RadioSelect):          :param new:          :param new_message:          :param source_full: url to get full listing -        :param multiple_select: +        :param multiple_select: select multiple is available          :param sortname: column name (model attribute) to use to sort          :param col_prefix: prefix to remove to col_names          """ @@ -1055,7 +1095,6 @@ class DataTable(Select2Media, forms.RadioSelect):              if hasattr(self.associated_model, "QUICK_ACTIONS"):                  dct['quick_actions'] = \                      self.associated_model.get_quick_actions(user=self.user) -                self.multiple_select = True          source = unicode(self.source)          dct.update({'name': name,                      'col_names': col_names, | 
