Add support to on_change_with grouped
review313001
This commit is contained in:
1 parent
ffef7dbb65
commit
8c192d47d0
2 files changed
+26
-3
No files matched your search
+18
-3
@@ -772,6 +772,9 @@ class Model(object):
|
||||
self._on_change_set(field, value)
|
||||
for field, value in later.iteritems():
|
||||
self._on_change_set(field, value)
|
||||
values = {}
|
||||
to_change = set()
|
||||
later = set()
|
||||
for field, definition in self._fields.iteritems():
|
||||
if not definition.get('on_change_with'):
|
||||
continue
|
||||
@@ -779,11 +782,23 @@ class Model(object):
|
||||
continue
|
||||
if field == name:
|
||||
continue
|
||||
args = self._on_change_args(definition['on_change_with'])
|
||||
if to_change & set(definition['on_change_with']):
|
||||
later.add(field)
|
||||
to_change.add(field)
|
||||
values.update(self._on_change_args(definition['on_change_with']))
|
||||
if to_change:
|
||||
context = self._config.context
|
||||
res = getattr(self._proxy, 'on_change_with_%s' % field)(args,
|
||||
result = getattr(self._proxy, 'on_change_with')(list(to_change),
|
||||
values, context)
|
||||
for field, value in result.items():
|
||||
self._on_change_set(field, value)
|
||||
for field in later:
|
||||
definition = self._fields[field]
|
||||
values = self._on_change_args(definition['on_change_with'])
|
||||
context = self._config.context
|
||||
result = getattr(self._proxy, 'on_change_with_%s' % field)(values,
|
||||
context)
|
||||
self._on_change_set(field, res)
|
||||
self._on_change_set(field, result)
|
||||
if self._parent:
|
||||
self._parent._changed.add(self._parent_field_name)
|
||||
self._parent._on_change(self._parent_field_name)
|
||||
|
||||
@@ -289,6 +289,14 @@ class TestModel(TestCase):
|
||||
trigger.on_create = True
|
||||
self.assertEqual(trigger.on_time, False)
|
||||
|
||||
def test_on_change_with(self):
|
||||
Attachment = Model.get('ir.attachment')
|
||||
|
||||
attachment = Attachment()
|
||||
|
||||
attachment.description = 'Test'
|
||||
self.assertEqual(attachment.summary, 'Test')
|
||||
|
||||
def test_on_change_set(self):
|
||||
User = Model.get('res.user')
|
||||
Group = Model.get('res.group')
|
||||
|
||||
Reference in new issue
Block a user