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

        issue8478
        review251711002
        (grafted from 30b54939766454ee7a461a5ddcbe04256edbecae)
diffstat:

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

diffs (30 lines):

diff -r b6f1f9469974 -r 9438b92ee708 trytond/ir/model.py
--- a/trytond/ir/model.py       Sat Jul 13 00:08:30 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