From 979c553918fd529e1c3408c23ca85ef1b4af0203 Mon Sep 17 00:00:00 2001
From: Raphael Collet <rco@openerp.com>
Date: Mon, 26 Sep 2016 15:05:36 +0200
Subject: [PATCH] [IMP] base: refactor `_instanciate` on `ir.model` to make it
 extendable

---
 odoo/addons/base/ir/ir_model.py | 4 ++--
 odoo/modules/registry.py        | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/odoo/addons/base/ir/ir_model.py b/odoo/addons/base/ir/ir_model.py
index 21e00cae6a08..b57c8de4fd09 100644
--- a/odoo/addons/base/ir/ir_model.py
+++ b/odoo/addons/base/ir/ir_model.py
@@ -165,7 +165,7 @@ class IrModel(models.Model):
 
     @api.model
     def _instanciate(self, model_data):
-        """ Instanciate a model class for the custom model given by parameters ``model_data``. """
+        """ Return a class for the custom model given by parameters ``model_data``. """
         class CustomModel(models.Model):
             _name = encode(model_data['model'])
             _description = model_data['name']
@@ -174,7 +174,7 @@ class IrModel(models.Model):
             _transient = bool(model_data['transient'])
             __doc__ = model_data['info']
 
-        CustomModel._build_model(self.pool, self._cr)
+        return CustomModel
 
 
 class IrModelFields(models.Model):
diff --git a/odoo/modules/registry.py b/odoo/modules/registry.py
index 9be7fa15ae91..946682c241e0 100644
--- a/odoo/modules/registry.py
+++ b/odoo/modules/registry.py
@@ -276,7 +276,8 @@ class Registry(Mapping):
         ir_model = env['ir.model']
         cr.execute('SELECT * FROM ir_model WHERE state=%s', ('manual',))
         for model_data in cr.dictfetchall():
-            ir_model._instanciate(model_data)
+            model_class = ir_model._instanciate(model_data)
+            model_class._build_model(self, cr)
 
         # prepare the setup on all models
         models = env.values()
-- 
GitLab