From b0a2a41d78292cb8b9e53788d40c6dc5915a466d Mon Sep 17 00:00:00 2001 From: Gorash Date: Thu, 1 Apr 2021 15:26:18 +0000 Subject: [PATCH] [IMP] all/website: using lazy values and `t-cache` in templates Using lazy values allows you to not do query when the content is not displayed or if it is already cached. Adding `t-cache` only reduces render time, but combining it with lazy values saves browses, computes and query. Thus for the `/shop` page the page is displayed in 60ms (before: 250ms). Part-of: odoo/odoo#88276 --- addons/portal/models/ir_qweb.py | 6 +- addons/portal/views/portal_templates.xml | 124 ++++++++++-------- addons/web/views/webclient_templates.xml | 4 +- addons/website/models/ir_qweb.py | 22 ++-- addons/website/models/ir_ui_view.py | 19 ++- addons/website/models/website_menu.py | 2 +- addons/website/tests/test_performance.py | 2 +- .../views/website_navbar_templates.xml | 19 ++- addons/website/views/website_templates.xml | 47 ++++--- addons/website_blog/controllers/main.py | 16 +-- addons/website_blog/tests/test_performance.py | 12 +- .../views/website_blog_components.xml | 2 +- .../views/website_blog_posts_loop.xml | 4 +- .../views/website_blog_templates.xml | 6 +- addons/website_event/controllers/main.py | 7 +- .../views/event_templates_list.xml | 2 +- .../event_templates_page_registration.xml | 2 +- .../website_event/views/website_templates.xml | 1 + addons/website_forum/controllers/main.py | 4 +- addons/website_forum/views/website_forum.xml | 1 + .../website_hr_recruitment_templates.xml | 1 + .../views/website_livechat.xml | 2 +- addons/website_sale/controllers/main.py | 17 ++- addons/website_sale/views/templates.xml | 49 ++++--- .../views/templates.xml | 4 +- .../tests/tours/website_sale_wishlist.js | 67 +++++++++- .../views/website_sale_wishlist_template.xml | 42 +++--- addons/website_slides/controllers/main.py | 27 ++-- .../tours/slide_course_publisher_standard.js | 4 +- .../tests/tours/slides_course_publisher.js | 4 +- .../website_slides_templates_homepage.xml | 2 +- .../views/website_slides_templates_utils.xml | 1 + 32 files changed, 330 insertions(+), 192 deletions(-) diff --git a/addons/portal/models/ir_qweb.py b/addons/portal/models/ir_qweb.py index 9d85910a7d4..0cd76af1808 100644 --- a/addons/portal/models/ir_qweb.py +++ b/addons/portal/models/ir_qweb.py @@ -2,7 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import models -from odoo.tools import is_html_empty +from odoo.tools import is_html_empty, lazy class IrQWeb(models.AbstractModel): @@ -15,9 +15,9 @@ class IrQWeb(models.AbstractModel): irQweb = super()._prepare_frontend_environment(values) values.update( is_html_empty=is_html_empty, - languages=[lang for + languages=lazy(lambda: [lang for lang in irQweb.env['res.lang'].get_available() - if lang[0] in irQweb.env['ir.http']._get_frontend_langs()] + if lang[0] in irQweb.env['ir.http']._get_frontend_langs()]) ) for key in irQweb.env.context: if key not in values: diff --git a/addons/portal/views/portal_templates.xml b/addons/portal/views/portal_templates.xml index ecaee6ddbac..24ca6ad2b50 100644 --- a/addons/portal/views/portal_templates.xml +++ b/addons/portal/views/portal_templates.xml @@ -6,25 +6,27 @@ - + + +
@@ -45,42 +47,57 @@