[IMP] ir_model: add validation on custom field dependencies

This commit is contained in:
Raphael Collet
2016-03-16 13:51:59 +01:00
parent 1aeb747c6e
commit 0ec5456e63
+16
View File
@@ -328,6 +328,22 @@ class ir_model_fields(osv.osv):
self.readonly = True
self.copy = False
@api.constrains('depends')
def _check_depends(self):
""" Check whether all fields in dependencies are valid. """
for record in self:
for seq in (record.depends or "").split(","):
model = self.env[record.model]
names = seq.strip().split(".")
last = len(names) - 1
for index, name in enumerate(names):
field = model._fields.get(name)
if field is None:
raise UserError(_("Unknown field %r in dependency %r") % (name, seq.strip()))
if index < last and not field.relational:
raise UserError(_("Non-relational field %r in dependency %r") % (name, seq.strip()))
model = model[name]
@api.onchange('compute')
def _onchange_compute(self):
if self.compute: