summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Feyens <vfe@odoo.com>2020-06-25 14:06:52 +0000
committerVictor Feyens <vfe@odoo.com>2020-08-03 07:23:29 +0000
commit34fb9f315958b9cbf1e580d376f5a91fad793e95 (patch)
tree1e37acd261fe805187d519420f7698886c3c82b7
parent69eaaac3a14be28366dc7082f4319a71e8ae439c (diff)
[IMP] portal,*: do not compute record counts for portal subpages.
The record counts are only useful for the badges displayed in /my & /my/home. By avoiding those counts on subpages, we gain a lot of useless queries, improving the loading speed of those sub-pages. X-original-commit: 79c8384f1bcbcdede030e187008319a70c664571
-rw-r--r--addons/account/controllers/portal.py4
-rw-r--r--addons/hr_timesheet/controllers/portal.py4
-rw-r--r--addons/portal/controllers/portal.py13
-rw-r--r--addons/project/controllers/portal.py4
-rw-r--r--addons/purchase/controllers/portal.py4
-rw-r--r--addons/sale/controllers/portal.py4
-rw-r--r--addons/website_crm_partner_assign/controllers/main.py4
7 files changed, 24 insertions, 13 deletions
diff --git a/addons/account/controllers/portal.py b/addons/account/controllers/portal.py
index 5f32d2fb13e..3818a9d4d6b 100644
--- a/addons/account/controllers/portal.py
+++ b/addons/account/controllers/portal.py
@@ -10,8 +10,8 @@ from odoo.http import request
class PortalAccount(CustomerPortal):
- def _prepare_portal_layout_values(self):
- values = super(PortalAccount, self)._prepare_portal_layout_values()
+ def _prepare_home_portal_values(self):
+ values = super(PortalAccount, self)._prepare_home_portal_values()
invoice_count = request.env['account.move'].search_count([
('move_type', 'in', ('out_invoice', 'in_invoice', 'out_refund', 'in_refund', 'out_receipt', 'in_receipt')),
])
diff --git a/addons/hr_timesheet/controllers/portal.py b/addons/hr_timesheet/controllers/portal.py
index aceb00e3232..4b239a042be 100644
--- a/addons/hr_timesheet/controllers/portal.py
+++ b/addons/hr_timesheet/controllers/portal.py
@@ -16,8 +16,8 @@ from odoo.addons.portal.controllers.portal import CustomerPortal, pager as porta
class TimesheetCustomerPortal(CustomerPortal):
- def _prepare_portal_layout_values(self):
- values = super(TimesheetCustomerPortal, self)._prepare_portal_layout_values()
+ def _prepare_home_portal_values(self):
+ values = super(TimesheetCustomerPortal, self)._prepare_home_portal_values()
domain = request.env['account.analytic.line']._timesheet_get_portal_domain()
values['timesheet_count'] = request.env['account.analytic.line'].sudo().search_count(domain)
return values
diff --git a/addons/portal/controllers/portal.py b/addons/portal/controllers/portal.py
index 6034a933e77..7e063c763fb 100644
--- a/addons/portal/controllers/portal.py
+++ b/addons/portal/controllers/portal.py
@@ -141,6 +141,10 @@ class CustomerPortal(Controller):
return groups
def _prepare_portal_layout_values(self):
+ """Values for /my/* templates rendering.
+
+ Does not include the record counts.
+ """
# get customer sales rep
sales_user = False
partner = request.env.user.partner_id
@@ -153,9 +157,16 @@ class CustomerPortal(Controller):
'archive_groups': [],
}
+ def _prepare_home_portal_values(self):
+ """Values for /my & /my/home routes template rendering.
+
+ Includes the record count for the displayed badges.
+ """
+ return self._prepare_portal_layout_values()
+
@route(['/my', '/my/home'], type='http', auth="user", website=True)
def home(self, **kw):
- values = self._prepare_portal_layout_values()
+ values = self._prepare_home_portal_values()
return request.render("portal.portal_my_home", values)
@route(['/my/account'], type='http', auth='user', website=True)
diff --git a/addons/project/controllers/portal.py b/addons/project/controllers/portal.py
index a8d2cc90514..9d6f591d65d 100644
--- a/addons/project/controllers/portal.py
+++ b/addons/project/controllers/portal.py
@@ -15,8 +15,8 @@ from odoo.osv.expression import OR
class CustomerPortal(CustomerPortal):
- def _prepare_portal_layout_values(self):
- values = super(CustomerPortal, self)._prepare_portal_layout_values()
+ def _prepare_home_portal_values(self):
+ values = super(CustomerPortal, self)._prepare_home_portal_values()
values['project_count'] = request.env['project.project'].search_count([])
values['task_count'] = request.env['project.task'].search_count([])
return values
diff --git a/addons/purchase/controllers/portal.py b/addons/purchase/controllers/portal.py
index 600f7b8f751..252b7d0153d 100644
--- a/addons/purchase/controllers/portal.py
+++ b/addons/purchase/controllers/portal.py
@@ -16,8 +16,8 @@ from odoo.addons.web.controllers.main import Binary
class CustomerPortal(CustomerPortal):
- def _prepare_portal_layout_values(self):
- values = super(CustomerPortal, self)._prepare_portal_layout_values()
+ def _prepare_home_portal_values(self):
+ values = super(CustomerPortal, self)._prepare_home_portal_values()
values['purchase_count'] = request.env['purchase.order'].search_count([
('state', 'in', ['purchase', 'done', 'cancel'])
])
diff --git a/addons/sale/controllers/portal.py b/addons/sale/controllers/portal.py
index 01a43a9f07a..64fc442916a 100644
--- a/addons/sale/controllers/portal.py
+++ b/addons/sale/controllers/portal.py
@@ -14,8 +14,8 @@ from odoo.osv import expression
class CustomerPortal(CustomerPortal):
- def _prepare_portal_layout_values(self):
- values = super(CustomerPortal, self)._prepare_portal_layout_values()
+ def _prepare_home_portal_values(self):
+ values = super(CustomerPortal, self)._prepare_home_portal_values()
partner = request.env.user.partner_id
SaleOrder = request.env['sale.order']
diff --git a/addons/website_crm_partner_assign/controllers/main.py b/addons/website_crm_partner_assign/controllers/main.py
index 7f560b4f394..714f3e9ea93 100644
--- a/addons/website_crm_partner_assign/controllers/main.py
+++ b/addons/website_crm_partner_assign/controllers/main.py
@@ -32,8 +32,8 @@ class WebsiteAccount(CustomerPortal):
('type', '=', 'opportunity')
]
- def _prepare_portal_layout_values(self):
- values = super(WebsiteAccount, self)._prepare_portal_layout_values()
+ def _prepare_home_portal_values(self):
+ values = super(WebsiteAccount, self)._prepare_home_portal_values()
lead_count = request.env['crm.lead'].search_count(self.get_domain_my_lead(request.env.user))
opp_count = request.env['crm.lead'].search_count(self.get_domain_my_opp(request.env.user))
values.update({