[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
|
# When one2many domain contains non-computed field, things are ok
|
||||||
self.assertEqual(result['value']['important_messages'],
|
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)]
|
# But here with commit 5676d81, we get value of: [(2, email.id)]
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
|||||||
+2
-3
@@ -1915,9 +1915,8 @@ class One2many(_RelationalMulti):
|
|||||||
_column_limit = property(attrgetter('limit'))
|
_column_limit = property(attrgetter('limit'))
|
||||||
|
|
||||||
def convert_to_onchange(self, value, fnames=None):
|
def convert_to_onchange(self, value, fnames=None):
|
||||||
if fnames:
|
fnames = set(fnames or value.fields_view_get()['fields'])
|
||||||
# do not serialize self's inverse field
|
fnames.discard(self.inverse_name)
|
||||||
fnames = [name for name in fnames if name != self.inverse_name]
|
|
||||||
return super(One2many, self).convert_to_onchange(value, fnames)
|
return super(One2many, self).convert_to_onchange(value, fnames)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user