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], {