Improve completion on boolean

- Do not convert None to False
- Complete with the opposite or both values

issue8620
review254181002
This commit is contained in:
Cédric Krier committed 2019-09-16 23:59:43 +02:00
1 parent 73923b62d4
commit ec8838b41a
1 file changed
+40 -6
+40 -6
View File
@@ -237,8 +237,6 @@ def convert_value(field, value, context=None):
return any(test.lower().startswith(value.lower())
for test in (
_('y'), _('Yes'), _('True'), _('t'), '1'))
else:
return bool(value)
def convert_float():
factor = float(field.get('factor', 1))
@@ -332,7 +330,7 @@ def test_convert_boolean():
('False', False),
('no', False),
('0', False),
(None, False),
(None, None),
):
assert convert_value(field, value) == result
@@ -487,7 +485,12 @@ def format_value(field, value, target=None, context=None):
context = {}
def format_boolean():
return _('True') if value else _('False')
if value is False:
return _("False")
elif value:
return _("True")
else:
return ''
def format_integer():
factor = float(field.get('factor', 1))
@@ -580,7 +583,7 @@ def test_format_boolean():
for value, result in (
(True, 'True'),
(False, 'False'),
(None, 'False'),
(None, ''),
):
assert format_value(field, value) == result
@@ -738,7 +741,10 @@ def complete_value(field, value):
"Complete value for field"
def complete_boolean():
if value:
if value is None:
yield True
yield False
elif value:
yield False
else:
yield True
@@ -788,6 +794,18 @@ def complete_value(field, value):
return completes.get(field['type'], lambda: [])()
def test_complete_boolean():
field = {
'type': 'boolean',
}
for value, result in [
(None, [True, False]),
(True, [False]),
(False, [True]),
]:
assert list(complete_value(field, value)) == result
def test_complete_selection():
field = {
'type': 'selection',
@@ -1674,6 +1692,22 @@ def test_completion():
assert list(dom.completion('Relatio')) == [
'Relation: ', 'Relation.Name: ']
dom = DomainParser({
'name': {
'string': "Active",
'name': 'active',
'type': 'boolean',
},
})
assert list(dom.completion("Act")) == ["Active: "]
assert list(dom.completion("Active:")) == [
"Active: ", "Active: True", "Active: False"]
assert list(dom.completion("Active: t")) == [
"Active: True", "Active: False"]
assert list(dom.completion("Active: f")) == [
"Active: False", "Active: True"]
if __name__ == '__main__':
for name in list(globals()):