From 41b55082ba40669ccf09e25bf53a359d716bf96d Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 1 Oct 2014 11:32:50 +0200 Subject: [PATCH] [FIX] models: on update, call inverse function on field even when it is stored The inverse function of a stored computed field was not called when creating or writing on a record with such a field. --- openerp/models.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/openerp/models.py b/openerp/models.py index a4597a21299..d3aae9a195a 100644 --- a/openerp/models.py +++ b/openerp/models.py @@ -3637,10 +3637,12 @@ class BaseModel(object): # split up fields into old-style and pure new-style ones old_vals, new_vals, unknown = {}, {}, [] for key, val in vals.iteritems(): - if key in self._columns: - old_vals[key] = val - elif key in self._fields: - new_vals[key] = val + field = self._fields.get(key) + if field: + if field.store or field.inherited: + old_vals[key] = val + if field.inverse and not field.inherited: + new_vals[key] = val else: unknown.append(key) @@ -3936,10 +3938,12 @@ class BaseModel(object): # split up fields into old-style and pure new-style ones old_vals, new_vals, unknown = {}, {}, [] for key, val in vals.iteritems(): - if key in self._all_columns: - old_vals[key] = val - elif key in self._fields: - new_vals[key] = val + field = self._fields.get(key) + if field: + if field.store or field.inherited: + old_vals[key] = val + if field.inverse and not field.inherited: + new_vals[key] = val else: unknown.append(key)