Use string version for selection values in error message
This commit is contained in:
1 parent
332bf2d30a
commit
779b329705
3 files changed
+41
No files matched your search
@@ -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)
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in new issue
Block a user