[FIX] openerp: Field One2many child propagation on NewId dict
If exist an one2many field as child of another field, this one2many get only empty lines and Javascript dataset set wrong referid, causing a bad query with False values and 'one2many_v_id'$ as inverse_id. This PR adetect on convert_to_change if field is one2many and fnames = None, in case True, set fnames with one2many model's fields This commit closes #12249, closes #11236 Courtsey of @rco-odoo for review
This commit is contained in:
@@ -307,7 +307,12 @@ class TestOnChange(common.TransactionCase):
|
||||
|
||||
# When one2many domain contains non-computed field, things are ok
|
||||
self.assertEqual(result['value']['important_messages'],
|
||||
[(5,)] + [(4, msg.id) for msg in discussion.important_messages])
|
||||
[(5,)] + [(1, msg.id, {
|
||||
'name': msg.name,
|
||||
'body': msg.body,
|
||||
'author': (msg.author.id, msg.author.display_name),
|
||||
'size': msg.size
|
||||
}) for msg in discussion.important_messages])
|
||||
|
||||
# But here with commit 5676d81, we get value of: [(2, email.id)]
|
||||
self.assertEqual(
|
||||
|
||||
+2
-3
@@ -1915,9 +1915,8 @@ class One2many(_RelationalMulti):
|
||||
_column_limit = property(attrgetter('limit'))
|
||||
|
||||
def convert_to_onchange(self, value, fnames=None):
|
||||
if fnames:
|
||||
# do not serialize self's inverse field
|
||||
fnames = [name for name in fnames if name != self.inverse_name]
|
||||
fnames = set(fnames or value.fields_view_get()['fields'])
|
||||
fnames.discard(self.inverse_name)
|
||||
return super(One2many, self).convert_to_onchange(value, fnames)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user