# HG changeset patch # User cmlenz # Date 1273503802 0 # Node ID 585fdbd30e056e516bdf9a9b6580bf8cd04b7e93 # Parent 5fd4a1e283518f85ac53adf3e817544b7c9f256f Fix handling of checkboxes and radio buttons with an empty value attribute in `HTMLFormFiller`. Thanks to Benoit Hirbec for pointing out the problem and providing a patch. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,8 @@ * Fix for error in how `HTMLFormFiller` would handle `textarea` elements if no value was not supplied form them. + * The `HTMLFormFiller` now correctly handles check boxes and radio buttons + with an empty `value` attribute. Version 0.6 diff --git a/genshi/filters/html.py b/genshi/filters/html.py --- a/genshi/filters/html.py +++ b/genshi/filters/html.py @@ -100,13 +100,13 @@ declval = attrs.get('value') checked = False if isinstance(value, (list, tuple)): - if declval: + if declval is not None: checked = declval in [unicode(v) for v in value] else: checked = any(value) else: - if declval: + if declval is not None: checked = declval == unicode(value) elif type == 'checkbox': checked = bool(value) diff --git a/genshi/filters/tests/html.py b/genshi/filters/tests/html.py --- a/genshi/filters/tests/html.py +++ b/genshi/filters/tests/html.py @@ -114,7 +114,7 @@

""", html.render()) - def test_fill_input_checkbox_no_value(self): + def test_fill_input_checkbox_single_value_auto_no_value(self): html = HTML("""

""") | HTMLFormFiller() @@ -196,6 +196,22 @@

""", (html | HTMLFormFiller(data={'foo': ['2']})).render()) + def test_fill_input_radio_empty_string(self): + html = HTML("""

+ +

""") + self.assertEquals("""

+ +

""", (html | HTMLFormFiller(data={'foo': ''})).render()) + + def test_fill_input_radio_multi_empty_string(self): + html = HTML("""

+ +

""") + self.assertEquals("""

+ +

""", (html | HTMLFormFiller(data={'foo': ['']})).render()) + def test_fill_select_no_value_auto(self): html = HTML("""