From 697f6007847e0cf209610acd533c5cd4d2c83296 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Fri, 24 Apr 2020 15:46:13 +0000 Subject: [PATCH] [IMP] website: add state of customize_view in cache Add in one shot all the states (active or not) for all keys of customize_view task-2211013 Co-authored-by: Romain Derie Co-authored-by: Jeremy Kersten --- addons/website/models/website.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/addons/website/models/website.py b/addons/website/models/website.py index ebef7e81729..9eeb0a98589 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -698,14 +698,22 @@ 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 + @tools.ormcache_context(keys=('website_id',)) + def _cache_customize_show_views(self): + views = self.env['ir.ui.view'].with_context(active_test=False).search([('customize_show', '=', True)]) + views = views.filter_duplicate() + return {v.key: v.active for v in views} + @tools.ormcache_context('key', keys=('website_id',)) + def is_view_active(self, key, raise_if_not_found=False): + """ + Return True if active, False if not active, None if not found or not a customize_show view + """ + views = self._cache_customize_show_views() + view = key in views and views[key] + if view is None and raise_if_not_found: + raise ValueError('No view of type customize_show found for key %s' % key) + return view @api.model def get_template(self, template):