summaryrefslogtreecommitdiff
path: root/ishtar_common/widgets.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-01-11 16:19:59 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-01-11 16:19:59 +0100
commit2aa223c0cac8c445e9f3855db66524cfdeae9380 (patch)
tree8b9137dd9b68121db86e4e22dfdb7b7016a6f1ad /ishtar_common/widgets.py
parent23697dd97eb201dd557272293227ec42a1c95a54 (diff)
parentdaeeeb175835559724c8520f4f5a8dcd5957a469 (diff)
downloadIshtar-2aa223c0cac8c445e9f3855db66524cfdeae9380.tar.bz2
Ishtar-2aa223c0cac8c445e9f3855db66524cfdeae9380.zip
Merge branch 'develop'
Diffstat (limited to 'ishtar_common/widgets.py')
-rw-r--r--ishtar_common/widgets.py49
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,