[IMP] core: remove support for domains in onchange

Part-of: odoo/odoo#116779
This commit is contained in:
Raphael Collet
2023-03-31 17:02:42 +02:00
parent 418159b716
commit 024fadfd0e
+8 -15
View File
@@ -6210,19 +6210,18 @@ class BaseModel(metaclass=MetaModel):
domain and warning messages are put in dictionary ``result``.
"""
onchange = onchange.strip()
if onchange not in ("1", "true"):
return
def process(res):
for method in self._onchange_methods.get(field_name, ()):
res = method(self)
if not res:
return
continue
if res.get('value'):
res['value'].pop('id', None)
self.update({key: val for key, val in res['value'].items() if key in self._fields})
if res.get('domain'):
_logger.warning(
"onchange method %s returned a domain, this is deprecated",
method.__qualname__
)
result.setdefault('domain', {}).update(res['domain'])
for key, val in res['value'].items():
if key in self._fields and key != 'id':
self[key] = val
if res.get('warning'):
result['warnings'].add((
res['warning'].get('title') or _("Warning"),
@@ -6230,12 +6229,6 @@ class BaseModel(metaclass=MetaModel):
res['warning'].get('type') or "",
))
if onchange in ("1", "true"):
for method in self._onchange_methods.get(field_name, ()):
method_res = method(self)
process(method_res)
return
def onchange(self, values, field_name, field_onchange):
""" Perform an onchange on the given field.