Check the existence of a getter before adding it to a field depends
Closes #15055
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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'})
|
||||
|
||||
Reference in New Issue
Block a user