From 070e78a7262d91c205c1fc1f2b35a71dc7e6de2d Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Tue, 21 Nov 2023 12:44:21 +0100 Subject: [PATCH] [PERF] website_sale_wishlist: check wishlist content once For each product of the shop page (if the template was enabled ofc), a call to `_is_in_wishlist` would be made, triggering one query to find the wishlist belonging to the current customer. This is now done only once in the controller to load all the wishlisted products. This code was previously taking up to 15% of the loading time, even when no wishlist were ever created on the database. Now, in the best case (no wishlist, standard situation), the time taken went down to 0.05% of the loading time, gaining > 100 ms of loading time (when website_sale_wishlist is installed and the template is not disabled). closes odoo/odoo#142860 Signed-off-by: Victor Feyens (vfe) --- addons/website_sale_wishlist/controllers/main.py | 6 ++++++ .../views/website_sale_wishlist_template.xml | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/website_sale_wishlist/controllers/main.py b/addons/website_sale_wishlist/controllers/main.py index 7c54914e434..f0730905da9 100644 --- a/addons/website_sale_wishlist/controllers/main.py +++ b/addons/website_sale_wishlist/controllers/main.py @@ -8,6 +8,12 @@ from odoo.addons.website_sale.controllers.main import WebsiteSale class WebsiteSaleWishlist(WebsiteSale): + def _get_additional_shop_values(self, values): + """ Hook to update values used for rendering website_sale.products template """ + vals = super()._get_additional_shop_values(values) + vals['products_in_wishlist'] = request.env['product.wishlist'].current().product_id.product_tmpl_id + return vals + @route(['/shop/wishlist/add'], type='json', auth="public", website=True) def add_to_wishlist(self, product_id, **kw): website = request.website diff --git a/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml b/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml index 0b6ac780369..64b7690b123 100644 --- a/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml +++ b/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml @@ -3,8 +3,8 @@