[FIX] models: make field inheritance work when source field is defined in old api
authorRaphael Collet <rco@openerp.com>
Tue, 16 Sep 2014 12:34:56 +0000 (14:34 +0200)
committerRaphael Collet <rco@openerp.com>
Tue, 16 Sep 2014 14:03:16 +0000 (16:03 +0200)
openerp/addons/test_inherit/models.py
openerp/models.py

index e1957ab..a02b366 100644 (file)
@@ -1,11 +1,15 @@
 # -*- coding: utf-8 -*-
-from openerp import models, fields, api
+from openerp import models, fields, api, osv
 
 # We just create a new model
 class mother(models.Model):
     _name = 'test.inherit.mother'
 
-    name = fields.Char('Name', required=True)
+    _columns = {
+        # check interoperability of field inheritance with old-style fields
+        'name': osv.fields.char('Name', required=True),
+    }
+
     surname = fields.Char(compute='_compute_surname')
     state = fields.Selection([('a', 'A'), ('b', 'B')])
 
index 31e9515..da53a76 100644 (file)
@@ -237,6 +237,11 @@ class MetaModel(api.Meta):
         if not self._custom:
             self.module_to_models.setdefault(self._module, []).append(self)
 
+        # transform columns into new-style fields (enables field inheritance)
+        for name, column in self._columns.iteritems():
+            if not hasattr(self, name):
+                setattr(self, name, column.to_field())
+
 
 class NewId(object):
     """ Pseudo-ids for new records. """