diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py
index bc4a24205af..7f670a81a46 100644
--- a/addons/website/models/ir_ui_view.py
+++ b/addons/website/models/ir_ui_view.py
@@ -448,6 +448,7 @@ class View(models.Model):
self._context.copy(),
main_object=self,
website=request.website,
+ is_view_active=request.website.is_view_active,
url_for=url_for,
res_company=request.website.company_id.sudo(),
languages=request.env['res.lang'].get_available(),
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index 22439e011d2..b3ef9a42cdc 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -698,6 +698,15 @@ class Website(models.Model):
raise ValueError('No record found for unique ID %s. It may have been deleted.' % (view_id))
return view
+ @tools.ormcache_context('key', keys=('website_id',))
+ def is_view_active(self, key):
+ """
+ Return True if active, False if not active, None if not found
+ """
+ view = self.viewref(key, raise_if_not_found=False)
+ return view.active if view else None
+
+
@api.model
def get_template(self, template):
View = self.env['ir.ui.view']
diff --git a/addons/website_blog/controllers/main.py b/addons/website_blog/controllers/main.py
index ec804c255c2..e4990b7413f 100644
--- a/addons/website_blog/controllers/main.py
+++ b/addons/website_blog/controllers/main.py
@@ -88,8 +88,8 @@ class WebsiteBlog(http.Controller):
else:
domain += [("post_date", "<=", fields.Datetime.now())]
- use_cover = request.website.viewref('website_blog.opt_blog_cover_post').active
- fullwidth_cover = request.website.viewref('website_blog.opt_blog_cover_post_fullwidth_design').active
+ use_cover = request.website.is_view_active('website_blog.opt_blog_cover_post')
+ fullwidth_cover = request.website.is_view_active('website_blog.opt_blog_cover_post_fullwidth_design')
# if blog, we show blog title, if use_cover and not fullwidth_cover we need pager + latest always
offset = (page - 1) * self._blog_post_per_page
diff --git a/addons/website_blog/tests/test_performance.py b/addons/website_blog/tests/test_performance.py
index 658e3acb4db..25a29b5e479 100644
--- a/addons/website_blog/tests/test_performance.py
+++ b/addons/website_blog/tests/test_performance.py
@@ -6,7 +6,7 @@ from odoo.addons.website.tests.test_performance import UtilPerf
class TestBlogPerformance(UtilPerf):
def test_10_perf_sql_blog_standard_data(self):
- self.assertEqual(self._get_url_hot_query('/blog'), 70)
+ self.assertEqual(self._get_url_hot_query('/blog'), 50)
def test_20_perf_sql_blog_bigger_data_scaling(self):
BlogPost = self.env['blog.post']
@@ -18,4 +18,4 @@ class TestBlogPerformance(UtilPerf):
for blog_post in blog_posts:
blog_post.tag_ids += blog_tags
blog_tags = blog_tags[:-1]
- self.assertEqual(self._get_url_hot_query('/blog'), 136)
+ self.assertEqual(self._get_url_hot_query('/blog'), 116)
diff --git a/addons/website_blog/views/website_blog_posts_loop.xml b/addons/website_blog/views/website_blog_posts_loop.xml
index 4e28509144f..fd6ca98edf4 100644
--- a/addons/website_blog/views/website_blog_posts_loop.xml
+++ b/addons/website_blog/views/website_blog_posts_loop.xml
@@ -13,10 +13,7 @@ according to the enabled options.