This patch fixes the CheckboxesWidget as a replacement for the
MultipleOptionsWidget in "list:reference" fields.
"list:reference" fields use the IS_IN_DB(...,multiple=True) validator. Its
options() method returns possible choices a list of string tuples (<key>,
<label>) to be used in HTML option tags and checkboxes. So the widget has to
convert the current values of the reference field to strings as well before
comparing them to the string <key>s returned by options() - see "value=(k in
values)".
Without the conversion the checkboxes won't show the current values - there
won't be any check marks.
diff -r 6e655c2a202d gluon/sqlhtml.py
--- a/gluon/sqlhtml.py Sat Jan 29 22:49:21 2011 -0600
+++ b/gluon/sqlhtml.py Sun Jan 30 22:53:07 2011 +0100
@@ -328,7 +328,10 @@
"""
# was values = re.compile('[\w\-:]+').findall(str(value))
- values = not isinstance(value,(list,tuple)) and [value] or value
+ if isinstance(value, (list, tuple)):
+ values = [str(v) for v in value]
+ else:
+ values = [str(value)]
attr = OptionsWidget._attributes(field, {}, **attributes)
Cheers
Bernd