diff --git a/addons/base_automation/models/base_automation.py b/addons/base_automation/models/base_automation.py index b0d076bb5fe..0d5f6ab4571 100644 --- a/addons/base_automation/models/base_automation.py +++ b/addons/base_automation/models/base_automation.py @@ -849,6 +849,8 @@ class BaseAutomation(models.Model): method = make_onchange(automation_rule.id) for field in automation_rule.on_change_field_ids: Model._onchange_methods[field.name].append(method) + if automation_rule.on_change_field_ids: + self.env.registry.clear_cache('templates') if automation_rule.model_id.is_mail_thread and automation_rule.trigger in MAIL_TRIGGERS: def _message_post(self, *args, **kwargs): diff --git a/addons/test_base_automation/tests/test_flow.py b/addons/test_base_automation/tests/test_flow.py index ea4e695bfbc..b52e700677c 100644 --- a/addons/test_base_automation/tests/test_flow.py +++ b/addons/test_base_automation/tests/test_flow.py @@ -1100,3 +1100,26 @@ class TestHttp(common.HttpCase): "_id": obj.id, "_model": obj._name, }) + + def test_on_change_get_views_cache(self): + model_name = "base.automation.lead.test" + my_view = self.env["ir.ui.view"].create({ + "name": "My View", + "model": model_name, + "type": "form", + "arch": "
", + }) + self.assertEqual( + self.env[model_name].get_view(my_view.id)["arch"], + '
' + ) + model = self.env["ir.model"]._get(model_name) + active_field = self.env["ir.model.fields"]._get(model_name, "active") + create_automation(self, trigger="on_change", model_id=model.id, on_change_field_ids=[Command.set([active_field.id])], _actions={ + "state": "code", + "code": "", + }) + self.assertEqual( + self.env[model_name].get_view(my_view.id)["arch"], + '
' + )