summaryrefslogtreecommitdiff
path: root/addons/website_theme_install/models/ir_ui_view.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/website_theme_install/models/ir_ui_view.py')
-rw-r--r--addons/website_theme_install/models/ir_ui_view.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/addons/website_theme_install/models/ir_ui_view.py b/addons/website_theme_install/models/ir_ui_view.py
new file mode 100644
index 00000000000..a222fbd884f
--- /dev/null
+++ b/addons/website_theme_install/models/ir_ui_view.py
@@ -0,0 +1,35 @@
+# coding: utf-8
+from odoo import api, fields, models
+
+class View(models.Model):
+ _inherit = 'ir.ui.view'
+
+ @api.model
+ def _get_inheriting_views_arch_website(self, view_id):
+ res = self.env['website'].get_current_website()
+
+ # In certain cases view validation as done by
+ # _validate_module_views will fail. When attempting to load
+ # inherited view CHILD:
+ #
+ # PARENT (theme_common)
+ # ^
+ # |
+ # CHILD (other_theme)
+ #
+ # During the view validation no website_id will be in context
+ # so the view will fail to apply, since PARENT won't be
+ # selected by the inheriting view arch domain.
+ #
+ # This is not a problem however, CHILD will never be loaded on
+ # a website where CHILD is not installed. To simulate this,
+ # return a website which has the theme containing CHILD
+ # installed.
+ if res:
+ return res
+ else:
+ view_theme = self.browse(view_id).theme_id
+ if view_theme:
+ return self.env['website'].search([('theme_ids', 'in', view_theme.id)], limit=1)
+ else:
+ return self.env['website']