[FIX] orm: create a foreign key for the function fields of type many2one and store...
authorMartin Trigaux <mat@openerp.com>
Wed, 5 Mar 2014 14:05:14 +0000 (15:05 +0100)
committerMartin Trigaux <mat@openerp.com>
Wed, 5 Mar 2014 14:05:14 +0000 (15:05 +0100)
bzr revid: mat@openerp.com-20140305140514-2sksy3lwqm07wvjh

openerp/osv/orm.py

index f9cfbe1..4645ec6 100644 (file)
@@ -3212,7 +3212,7 @@ class BaseModel(object):
                                 msg = "Table '%s': dropping index for column '%s' of type '%s' as it is not required anymore"
                                 _schema.debug(msg, self._table, k, f._type)
 
-                            if isinstance(f, fields.many2one):
+                            if isinstance(f, fields.many2one) or isinstance(f, fields.function) and f._type == 'many2one' and f.store:
                                 dest_model = self.pool.get(f._obj)
                                 if dest_model._table != 'ir_actions':
                                     self._m2o_fix_foreign_key(cr, self._table, k, dest_model, f.ondelete)
@@ -3247,7 +3247,7 @@ class BaseModel(object):
                                 todo_end.append((order, self._update_store, (f, k)))
 
                             # and add constraints if needed
-                            if isinstance(f, fields.many2one):
+                            if isinstance(f, fields.many2one) or isinstance(f, fields.function) and f._type == 'many2one' and f.store:
                                 if not self.pool.get(f._obj):
                                     raise except_orm('Programming Error', 'There is no reference available for %s' % (f._obj,))
                                 dest_model = self.pool.get(f._obj)