forms: handle present-but-False readonly attribute (#44090)
This commit is contained in:
parent
78cb7e1cb9
commit
2c0bba5f71
|
@ -106,6 +106,15 @@ def test_stringwidget_required():
|
|||
assert widget.parse() == 'bar'
|
||||
|
||||
|
||||
def test_stringwidget_readonly():
|
||||
widget = StringWidget('test', value='foo', required=True)
|
||||
assert 'readonly' not in str(widget.render())
|
||||
widget = StringWidget('test', value='foo', required=True, readonly=False)
|
||||
assert 'readonly' not in str(widget.render())
|
||||
widget = StringWidget('test', value='foo', required=True, readonly=True)
|
||||
assert 'readonly="readonly"' in str(widget.render())
|
||||
|
||||
|
||||
def test_table_list_rows():
|
||||
widget = TableListRowsWidget('test', columns=['a', 'b', 'c'])
|
||||
form = MockHtmlForm(widget)
|
||||
|
|
|
@ -556,6 +556,10 @@ class CompositeWidget(quixote.form.CompositeWidget):
|
|||
|
||||
class StringWidget(quixote.form.StringWidget):
|
||||
def __init__(self, name, *args, **kwargs):
|
||||
if 'readonly' in kwargs and not kwargs.get('readonly'):
|
||||
del kwargs['readonly']
|
||||
elif 'readonly' in kwargs:
|
||||
kwargs['readonly'] = 'readonly'
|
||||
self.validation_function = kwargs.pop('validation_function', None)
|
||||
super(StringWidget, self).__init__(name, *args, **kwargs)
|
||||
|
||||
|
|
Loading…
Reference in New Issue