From 04ab9aaedf796c733a46f57092e547176e436d40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Thu, 3 Sep 2026 12:24:29 +0200 Subject: [PATCH] Check the existence of a getter before adding it to a field depends Closes #15055 (grafted from 9d5d21d76b461d82c7d43c6221f7e9f1f1d3f5cc) --HG-- branch : 8.0 --- trytond/trytond/model/modelview.py | 1 + trytond/trytond/tests/test_field_depends.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/trytond/trytond/model/modelview.py b/trytond/trytond/model/modelview.py index b093a666b1..d19c14bb84 100644 --- a/trytond/trytond/model/modelview.py +++ b/trytond/trytond/model/modelview.py @@ -170,6 +170,7 @@ class ModelView(Model): depend = depend[len('_parent_'):] if dep_field := getattr(cls, depend, None): if (isinstance(dep_field, fields.Function) + and dep_field.getter and dep_field.getter.startswith('on_change_with')): meth_names.append(dep_field.getter) diff --git a/trytond/trytond/tests/test_field_depends.py b/trytond/trytond/tests/test_field_depends.py index 3d0adc12af..cae0d2a061 100644 --- a/trytond/trytond/tests/test_field_depends.py +++ b/trytond/trytond/tests/test_field_depends.py @@ -273,8 +273,9 @@ class FieldDependsTestCase(TestCase): test = fields.Char("Test") foo = fields.Function(fields.Char("Foo"), 'on_change_with_foo') bar = fields.Char("Bar") + baz = fields.Function(fields.Char("Baz")) - @fields.depends('foo') + @fields.depends('foo', 'baz') def on_change_test(self): pass @@ -282,7 +283,12 @@ class FieldDependsTestCase(TestCase): def on_change_with_foo(self, name=None): pass + @classmethod + def column_baz(cls, tables): + t, _ = tables[None] + return t.bar + Model.__setup__() Model.__post_setup__() - self.assertEqual(Model.test.on_change, {'foo', 'bar'}) + self.assertEqual(Model.test.on_change, {'foo', 'bar', 'baz'})