From 64249936e82926353350a0db8490eb6b17fe5941 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Thu, 15 Dec 2016 11:08:13 +0100 Subject: [PATCH] [FIX] models: allow constraint methods triggered by function fields --- openerp/models.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/openerp/models.py b/openerp/models.py index f20eae7ecf5..b13139de47f 100644 --- a/openerp/models.py +++ b/openerp/models.py @@ -747,10 +747,11 @@ class BaseModel(object): methods = [] for attr, func in getmembers(cls, is_constraint): for name in func._constrains: - if name not in cls._fields: + field = cls._fields.get(name) + if not field: _logger.warning("method %s.%s: @constrains parameter %r is not a field name", cls._name, attr, name) - if not cls._fields[name].column: - _logger.warning("method %s.%s: @constrains parameter %r is not stored", cls._name, attr, name) + if not (field.store or field.column and field.column._fnct_inv): + _logger.warning("method %s.%s: @constrains parameter %r is not writeable", cls._name, attr, name) methods.append(func) # optimization: memoize result on cls, it will not be recomputed