diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py index 66d2d8ea363..93c5fb373b2 100644 --- a/addons/website/models/ir_ui_view.py +++ b/addons/website/models/ir_ui_view.py @@ -83,7 +83,8 @@ class View(models.Model): # original tree. Indeed, the order of children 'id' fields # must remain the same so that the inheritance is applied # in the same order in the copied tree. - inherit_child.copy({'inherit_id': website_specific_view.id, 'key': inherit_child.key}) + child = inherit_child.copy({'inherit_id': website_specific_view.id, 'key': inherit_child.key}) + inherit_child.inherit_children_ids.write({'inherit_id': child.id}) inherit_child.unlink() else: # Trigger COW on inheriting views diff --git a/addons/website/tests/test_views.py b/addons/website/tests/test_views.py index bb847ba9f6a..0d24a2517ad 100644 --- a/addons/website/tests/test_views.py +++ b/addons/website/tests/test_views.py @@ -797,6 +797,54 @@ class TestCowViewSaving(common.TransactionCase): all_title_updated = specific_view.website_meta_title == self.base_view.website_meta_title == "A bug got fixed by updating this field" self.assertEqual(all_title_updated, True, "Update on top level generic views should also be applied on specific views") + def test_multiple_inherit_level(self): + """ Test multi-level inheritance: + Base + | + ---> Extension (Website-specific) + | + ---> Extension 2 (Website-specific) + """ + View = self.env['ir.ui.view'] + + self.inherit_view.website_id = 1 + inherit_view_2 = View.create({ + 'name': 'Extension 2', + 'mode': 'extension', + 'inherit_id': self.inherit_view.id, + 'arch': '