Skip to content

Commit 65fc103

Browse files
committed
refactor: change method used to assign radiobuttons for boolean
use setdefault('type', 'radiobutton') rather than hardcoding the value into the underlying self.input (input_html4) call. Also add test for undefined radiobutton.
1 parent 361eacb commit 65fc103

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

roundup/cgi/templating.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2165,26 +2165,27 @@ def field(self, labelfirst=False, y_label=None, n_label=None,
21652165
n_label += '</label>'
21662166

21672167
checked = value and "checked" or ""
2168+
kwargs.setdefault("type", "radio")
21682169
if value:
2169-
y_rb = self.input(type="radio", name=self._formname, value="yes",
2170+
y_rb = self.input(name=self._formname, value="yes",
21702171
checked="checked", id="%s_%s" % (
21712172
self._formname, 'yes'), **kwargs)
21722173

2173-
n_rb = self.input(type="radio", name=self._formname, value="no",
2174+
n_rb = self.input(name=self._formname, value="no",
21742175
id="%s_%s" % (
21752176
self._formname, 'no'), **kwargs)
21762177
else:
2177-
y_rb = self.input(type="radio", name=self._formname, value="yes",
2178+
y_rb = self.input(name=self._formname, value="yes",
21782179
id="%s_%s" % (self._formname, 'yes'), **kwargs)
21792180

2180-
n_rb = self.input(type="radio", name=self._formname, value="no",
2181+
n_rb = self.input(name=self._formname, value="no",
21812182
checked="checked", id="%s_%s" % (
21822183
self._formname, 'no'), **kwargs)
21832184

21842185
if (u_label):
21852186
if (u_label is True): # it was set via u_label=True
21862187
u_label = '' # make it empty but a string not boolean
2187-
u_rb = self.input(type="radio", name=self._formname, value="",
2188+
u_rb = self.input(name=self._formname, value="",
21882189
id="%s_%s" % (self._formname, 'unk'), **kwargs)
21892190
else:
21902191
# don't generate a trivalue radiobutton.

test/test_templating.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -803,6 +803,8 @@ def test_BoolHTMLRadioButtons(self):
803803
'True</label>') % params
804804
n_label = ('<label class="rblabel" '
805805
'for="issue1@%(propname)s_no">False</label>') % params
806+
u_label = ('<label class="rblabel" '
807+
'for="issue1@%(propname)s_unk">Ignore</label>') % params
806808

807809
input_expected = (
808810
'<input %(check1)sid="issue1@%(propname)s_yes" '
@@ -828,7 +830,23 @@ def test_BoolHTMLRadioButtons(self):
828830
print(d.field(labelfirst=True))
829831
self.assertEqual(d.field(labelfirst=True), input_expected)
830832

831-
# one test on the last d is enough.
833+
input_expected = (
834+
'<label class="rblabel" for="issue1@%(propname)s_unk">'
835+
'Ignore</label>'
836+
'<input id="issue1@%(propname)s_unk" '
837+
'name="issue1@%(propname)s" type="radio" value="">'
838+
'<input %(check1)sid="issue1@%(propname)s_yes" '
839+
'name="issue1@%(propname)s" type="radio" value="yes">'
840+
'<label class="rblabel" for="issue1@%(propname)s_yes">'
841+
'Yes</label>'
842+
'<input %(check2)sid="issue1@%(propname)s_no" name="issue1@%(propname)s" '
843+
'type="radio" value="no"><label class="rblabel" '
844+
'for="issue1@%(propname)s_no">No</label>') % params
845+
846+
self.assertEqual(d.field(u_label=u_label), input_expected)
847+
848+
849+
# one test with the last d is enough.
832850
# check permissions return
833851
is_view_ok_orig = d.is_view_ok
834852
is_edit_ok_orig = d.is_edit_ok

0 commit comments

Comments
 (0)