From ed470bada71c9a9126b85e69b49a3dc7aed3cf73 Mon Sep 17 00:00:00 2001 From: Sebastien Marie Date: Wed, 17 Jul 2019 00:55:17 +0200 Subject: [PATCH] Skip the Function field without setter in Data.sync() issue8478 review251711002 --- trytond/ir/model.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/trytond/ir/model.py b/trytond/ir/model.py index 89d5fe7299..167bac1bcc 100644 --- a/trytond/ir/model.py +++ b/trytond/ir/model.py @@ -1239,6 +1239,17 @@ class ModelData(ModelSQL, ModelView): @classmethod @ModelView.button def sync(cls, records): + def settable(Model, fieldname): + try: + field = Model._fields[fieldname] + except KeyError: + return False + + if isinstance(field, fields.Function) and not field.setter: + return False + + return True + with Transaction().set_user(0): pool = Pool() to_write = [] @@ -1254,7 +1265,7 @@ class ModelData(ModelSQL, ModelView): # if they come from version < 3.2 if values != fs_values: values = {f: v for f, v in fs_values.items() - if f in Model._fields} + if settable(Model, f)} record = Model(data.db_id) models_to_write[Model].extend(([record], values)) to_write.extend([[data], {