Use string version for selection values in error message

This commit is contained in:
Cédric Krier committed 2023-11-17 19:55:48 +01:00
1 parent 332bf2d30a
commit 779b329705
3 files changed
+41

No files matched your search

+4
View File
@@ -244,11 +244,15 @@ class Model(URLMixin, PoolBase, metaclass=ModelMeta):
IrModelField = pool.get('ir.model.field')
def format_value(value):
ffield = getattr(cls, field, None)
if isinstance(value, Model):
try:
return value.rec_name
except Exception:
return str(value.id)
elif ffield and ffield._type in {'selection', 'multiselection'}:
selection = ffield.get_selection(cls, field, record)
return ffield.get_selection_string(selection, value)
else:
return str(value)
+9
View File
@@ -10,6 +10,15 @@ class Model(ModelSQL):
'Model'
__name__ = 'test.model'
name = fields.Char('Name')
selection = fields.Selection([
('foo', "Foo"),
('bar', "Bar"),
(None, ""),
], "Selection")
multiselection = fields.MultiSelection([
('foo', "Foo"),
('bar', "Bar"),
], "MultiSelection")
class ModelParent(Model):
+28
View File
@@ -204,6 +204,34 @@ class ModelTestCase(unittest.TestCase):
'model': "Model", 'field': "Name",
'record': record.id, 'value': "Test"})
@with_transaction()
def test_names_value_selection(self):
"test __names__ with selection value"
pool = Pool()
Model = pool.get('test.model')
record = Model(selection='foo')
names = Model.__names__(field='selection', record=record)
self.assertEqual(
names, {
'model': "Model", 'field': "Selection",
'record': record.id, 'value': "Foo"})
@with_transaction()
def test_names_value_multiselection(self):
"test __names__ with multiselection value"
pool = Pool()
Model = pool.get('test.model')
record = Model(multiselection=['foo', 'bar'])
names = Model.__names__(field='multiselection', record=record)
self.assertEqual(
names, {
'model': "Model", 'field': "MultiSelection",
'record': record.id, 'value': "Foo, Bar"})
@with_transaction()
def test_names_value_list(self):
"Test __names__ with value as list"