[IMP] ir_model: add validation on custom field dependencies
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user