From 54048cb2280ff3036a11f1b25bb36d25020b4887 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Thu, 23 Apr 2020 12:40:03 +0000 Subject: [PATCH] [IMP] website, website_blog: perf - cache customize show views Most of the website rendering process depends of customize_show views which are part of a configuration setup. Once it has been setup, it will most likely never change afterward. It makes sense to orm cache those infos to avoid having to query ir.ui.view table everytime we render something. Note that just store basic and small infos used for customize_show case. task-2211013 Co-authored-by: Romain Derie Co-authored-by: Jeremy Kersten --- addons/website/models/ir_ui_view.py | 1 + addons/website/models/website.py | 9 +++++++++ addons/website_blog/controllers/main.py | 4 ++-- addons/website_blog/tests/test_performance.py | 4 ++-- .../views/website_blog_posts_loop.xml | 15 ++++++--------- .../website_blog/views/website_blog_templates.xml | 8 ++++---- 6 files changed, 24 insertions(+), 17 deletions(-) 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. - - - - +
@@ -105,7 +102,7 @@ according to the enabled options.
-
+
@@ -122,7 +119,7 @@ according to the enabled options.
-
+
@@ -150,7 +147,7 @@ according to the enabled options. Untitled Post -
+
by
@@ -160,7 +157,7 @@ according to the enabled options.