changeset 30b549397664 in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset;node=30b549397664
description:
        Skip the Function field without setter in Data.sync()

        issue8478
        review251711002
diffstat:

 trytond/ir/model.py |  13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diffs (30 lines):

diff -r b639c809bd13 -r 30b549397664 trytond/ir/model.py
--- a/trytond/ir/model.py       Sat Jul 13 00:14:39 2019 +0200
+++ b/trytond/ir/model.py       Wed Jul 17 00:55:17 2019 +0200
@@ -1239,6 +1239,17 @@
     @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 @@
                 # 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], {

Reply via email to