Skip to content
Snippets Groups Projects
Commit 5a8d6c35 authored by Romain Derie's avatar Romain Derie
Browse files

[IMP] website, test_website: avoid a query on res_company_user_rel

Manual forward port, commit was lost from 15.2 to master. Either it
seemed not needed after the httpocalypse refactoring, or was simply
lost during the rebase.

-----

We can remove an useless SQL Query for public user on every single page
serve, if we directly set the website's company_id in the available
company_ids of the public user.

Indeed, the public user from a website always have the same company_id
as the website.

We can then do that directly and bypass the next line which will
always be true in the case of the public user, making a read for
nothing.

task-2774979

closes #85419

X-original-commit: c95ab6f2

[1]: https://github.com/odoo/odoo/commit/728ade674cb12c64718efda56b0d5d542e319cba



closes odoo/odoo#87856

Signed-off-by: default avatarRomain Derie (rde) <rde@odoo.com>
parent aa1c1b0b
No related branches found
No related tags found
No related merge requests found
......@@ -7,5 +7,5 @@ from odoo.addons.website.tests.test_performance import UtilPerf
class TestPerformance(UtilPerf):
def test_10_perf_sql_website_controller_minimalist(self):
url = '/empty_controller_test'
self.assertEqual(self._get_url_hot_query(url), 2)
self.assertEqual(self._get_url_hot_query(url, cache=False), 2)
self.assertEqual(self._get_url_hot_query(url), 1)
self.assertEqual(self._get_url_hot_query(url, cache=False), 1)
......@@ -198,11 +198,17 @@ class Http(models.AbstractModel):
# propagate to the global context of the tab. If the company of
# the website is not in the allowed companies of the user, set
# the main company of the user.
company_id = website._get_cached('company_id')
website_company_id = website._get_cached('company_id')
if user.id == website._get_cached('user_id'):
# avoid a read on res_company_user_rel in case of public user
allowed_company_ids = [website_company_id]
elif website_company_id in user.company_ids.ids:
allowed_company_ids = [website_company_id]
else:
allowed_company_ids = user.company_id.ids
request.update_context(
allowed_company_ids=(
[company_id] if company_id in user.company_ids.ids else user.company_id.ids
),
allowed_company_ids=allowed_company_ids,
website_id=website.id,
**cls._get_web_editor_context(),
)
......
......@@ -89,30 +89,30 @@ class TestWebsitePerformance(UtilPerf):
def test_10_perf_sql_queries_page(self):
# standard untracked website.page
self.assertEqual(self._get_url_hot_query(self.page.url), 7)
self.assertEqual(self._get_url_hot_query(self.page.url), 6)
self.assertEqual(self._get_url_hot_query(self.page.url, cache=False), 11)
self.menu.unlink()
self.assertEqual(self._get_url_hot_query(self.page.url), 7)
self.assertEqual(self._get_url_hot_query(self.page.url), 6)
self.assertEqual(self._get_url_hot_query(self.page.url, cache=False), 11)
def test_15_perf_sql_queries_page(self):
# standard tracked website.page
self.page.track = True
self.assertEqual(self._get_url_hot_query(self.page.url), 15)
self.assertEqual(self._get_url_hot_query(self.page.url), 14)
self.assertEqual(self._get_url_hot_query(self.page.url, cache=False), 19)
self.menu.unlink()
self.assertEqual(self._get_url_hot_query(self.page.url), 15)
self.assertEqual(self._get_url_hot_query(self.page.url), 14)
self.assertEqual(self._get_url_hot_query(self.page.url, cache=False), 19)
def test_20_perf_sql_queries_homepage(self):
# homepage "/" has its own controller
self.assertEqual(self._get_url_hot_query('/'), 14)
self.assertEqual(self._get_url_hot_query('/'), 13)
self.assertEqual(self._get_url_hot_query('/', cache=False), 18)
def test_30_perf_sql_queries_page_no_layout(self):
# website.page with no call to layout templates
self.page.arch = '<div>I am a blank page</div>'
self.assertEqual(self._get_url_hot_query(self.page.url), 7)
self.assertEqual(self._get_url_hot_query(self.page.url), 6)
self.assertEqual(self._get_url_hot_query(self.page.url, cache=False), 7)
def test_40_perf_sql_queries_page_multi_level_menu(self):
......@@ -131,7 +131,7 @@ class TestWebsitePerformance(UtilPerf):
menu_bb.parent_id = menu_b
menu_aa.parent_id = menu_a
self.assertEqual(self._get_url_hot_query(self.page.url), 7)
self.assertEqual(self._get_url_hot_query(self.page.url), 6)
self.assertEqual(self._get_url_hot_query(self.page.url, cache=False), 11)
def test_50_perf_sql_web_assets(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment