[FIX] fields: do not set the inverse function on a readonly related field
This fixes #4681: prevent method copy() to write on the field.
This commit is contained in:
parent
09ac43ea99
commit
698981eccb
|
@ -106,7 +106,7 @@ class Message(models.Model):
|
|||
display_name = fields.Char(string='Abstract', compute='_compute_display_name')
|
||||
size = fields.Integer(compute='_compute_size', search='_search_size')
|
||||
double_size = fields.Integer(compute='_compute_double_size')
|
||||
discussion_name = fields.Char(related='discussion.name', readonly=True)
|
||||
discussion_name = fields.Char(related='discussion.name')
|
||||
|
||||
@api.one
|
||||
@api.constrains('author', 'discussion')
|
||||
|
|
|
@ -294,7 +294,7 @@ class TestNewFields(common.TransactionCase):
|
|||
# by default related fields are not stored
|
||||
field = message._fields['discussion_name']
|
||||
self.assertFalse(field.store)
|
||||
self.assertTrue(field.readonly)
|
||||
self.assertFalse(field.readonly)
|
||||
|
||||
# check value of related field
|
||||
self.assertEqual(message.discussion_name, discussion.name)
|
||||
|
|
|
@ -460,7 +460,8 @@ class Field(object):
|
|||
# determine dependencies, compute, inverse, and search
|
||||
self.depends = ('.'.join(self.related),)
|
||||
self.compute = self._compute_related
|
||||
self.inverse = self._inverse_related
|
||||
if not (self.readonly or field.readonly):
|
||||
self.inverse = self._inverse_related
|
||||
if field._description_searchable:
|
||||
# allow searching on self only if the related field is searchable
|
||||
self.search = self._search_related
|
||||
|
|
Loading…
Reference in New Issue