From f23b9b31b506b345d82afef09afea815f758df6d Mon Sep 17 00:00:00 2001 From: Joren Van Onder Date: Fri, 17 Jul 2015 14:41:00 +0200 Subject: [PATCH] [IMP] ir_model: don't allow manual creation of invalid one2many fields Only allow it when there is an inverse many2one. This is meant to try and prevent users from messing up their database. --- openerp/addons/base/ir/ir_model.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py index c3ba59f4f71..6120c671235 100644 --- a/openerp/addons/base/ir/ir_model.py +++ b/openerp/addons/base/ir/ir_model.py @@ -349,6 +349,10 @@ class ir_model_fields(osv.osv): if vals.get('relation',False) and not self.pool['ir.model'].search(cr, user, [('model','=',vals['relation'])]): raise UserError(_("Model %s does not exist!") % vals['relation']) + if vals.get('ttype', False) == 'one2many': + if not self.search(cr, user, [('model_id','=',vals['relation']), ('name','=',vals['relation_field']), ('ttype','=','many2one')]): + raise UserError(_("Many2one %s on model %s does not exist!") % (vals['relation_field'], vals['relation'])) + self.pool.clear_manual_fields() if vals['model'] in self.pool: