From 6ef27bb91317dfe49f9ab39f98d00914f7c40e8f Mon Sep 17 00:00:00 2001
From: Olivier Dony <odo@odoo.com>
Date: Mon, 14 May 2018 12:02:34 +0200
Subject: [PATCH] [REM] core: remove deprecated v7 onchange support

Old API support has been dropped as of 11.0, and the old onchange system
should have been discontinued along with it.

New-API onchange mechanism is automatically triggered without requiring
any extra markup in view declarations, as explained in the
documentation:
- https://www.odoo.com/documentation/11.0/reference/orm.html#porting-from-the-old-api-to-the-new-api
- https://www.odoo.com/documentation/11.0/reference/orm.html#onchange-updating-ui-on-the-fly
---
 odoo/models.py | 29 -----------------------------
 1 file changed, 29 deletions(-)

diff --git a/odoo/models.py b/odoo/models.py
index 527decc88922..f1de9a5c4bba 100644
--- a/odoo/models.py
+++ b/odoo/models.py
@@ -67,7 +67,6 @@ regex_order = re.compile('^(\s*([a-z0-9:_]+|"[a-z0-9:_]+")(\s+(desc|asc))?\s*(,|
 regex_object_name = re.compile(r'^[a-z0-9_.]+$')
 regex_pg_name = re.compile(r'^[a-z_][a-z0-9_$]*$', re.I)
 regex_field_agg = re.compile(r'(\w+)(?::(\w+)(?:\((\w+)\))?)?')
-onchange_v7 = re.compile(r"^(\w+)\((.*)\)$")
 
 AUTOINIT_RECALCULATE_STORED_FIELDS = 1000
 
@@ -4945,40 +4944,12 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})):
                 else:
                     result['warning'] = res['warning']
 
-        # onchange V8
         if onchange in ("1", "true"):
             for method in self._onchange_methods.get(field_name, ()):
                 method_res = method(self)
                 process(method_res)
             return
 
-        # onchange V7
-        match = onchange_v7.match(onchange)
-        if match:
-            method, params = match.groups()
-
-            class RawRecord(object):
-                def __init__(self, record):
-                    self._record = record
-                def __getitem__(self, name):
-                    record = self._record
-                    field = record._fields[name]
-                    return field.convert_to_write(record[name], record)
-                def __getattr__(self, name):
-                    return self[name]
-
-            # evaluate params -> tuple
-            global_vars = {'context': self._context, 'uid': self._uid}
-            if self._context.get('field_parent'):
-                record = self[self._context['field_parent']]
-                global_vars['parent'] = RawRecord(record)
-            field_vars = RawRecord(self)
-            params = safe_eval("[%s]" % params, global_vars, field_vars, nocopy=True)
-
-            # invoke onchange method
-            method_res = getattr(self._origin, method)(*params)
-            process(method_res)
-
     @api.multi
     def onchange(self, values, field_name, field_onchange):
         """ Perform an onchange on the given field.
-- 
GitLab