From c33419cfd20ebe1497d045d7d6f3e8a91607ca3c Mon Sep 17 00:00:00 2001 From: root Date: Wed, 9 Feb 2022 11:15:31 +0000 Subject: [PATCH] [FIX] sale: allow overriding portal domain Before this commit the only way to modify the domain is to completely override portal_my_quotes/portal_my_orders. Since this function is so big this is not clean/easy to do. By creating a separate function we can simply override it and we can reuse the same domain in two places. closes odoo/odoo#84886 X-original-commit: ff50844da0e4423372746e767f482a2a71148be4 Signed-off-by: Yannick Tivisse (yti) --- addons/sale/controllers/portal.py | 34 ++++++++++++++++--------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/addons/sale/controllers/portal.py b/addons/sale/controllers/portal.py index 3d662c016fc..36bd0c4fa27 100644 --- a/addons/sale/controllers/portal.py +++ b/addons/sale/controllers/portal.py @@ -23,18 +23,26 @@ class CustomerPortal(portal.CustomerPortal): SaleOrder = request.env['sale.order'] if 'quotation_count' in counters: - values['quotation_count'] = SaleOrder.search_count([ - ('message_partner_ids', 'child_of', [partner.commercial_partner_id.id]), - ('state', 'in', ['sent', 'cancel']) - ]) if SaleOrder.check_access_rights('read', raise_exception=False) else 0 + values['quotation_count'] = SaleOrder.search_count(self._prepare_quotations_domain(partner)) \ + if SaleOrder.check_access_rights('read', raise_exception=False) else 0 if 'order_count' in counters: - values['order_count'] = SaleOrder.search_count([ - ('message_partner_ids', 'child_of', [partner.commercial_partner_id.id]), - ('state', 'in', ['sale', 'done']) - ]) if SaleOrder.check_access_rights('read', raise_exception=False) else 0 + values['order_count'] = SaleOrder.search_count(self._prepare_orders_domain(partner)) \ + if SaleOrder.check_access_rights('read', raise_exception=False) else 0 return values + def _prepare_quotations_domain(self, partner): + return [ + ('message_partner_ids', 'child_of', [partner.commercial_partner_id.id]), + ('state', 'in', ['sent', 'cancel']) + ] + + def _prepare_orders_domain(self, partner): + return [ + ('message_partner_ids', 'child_of', [partner.commercial_partner_id.id]), + ('state', 'in', ['sale', 'done']) + ] + # # Quotations and Sales Orders # @@ -52,10 +60,7 @@ class CustomerPortal(portal.CustomerPortal): partner = request.env.user.partner_id SaleOrder = request.env['sale.order'] - domain = [ - ('message_partner_ids', 'child_of', [partner.commercial_partner_id.id]), - ('state', 'in', ['sent', 'cancel']) - ] + domain = self._prepare_quotations_domain(partner) searchbar_sortings = self._get_sale_searchbar_sortings() # default sortby order @@ -97,10 +102,7 @@ class CustomerPortal(portal.CustomerPortal): partner = request.env.user.partner_id SaleOrder = request.env['sale.order'] - domain = [ - ('message_partner_ids', 'child_of', [partner.commercial_partner_id.id]), - ('state', 'in', ['sale', 'done']) - ] + domain = self._prepare_orders_domain(partner) searchbar_sortings = self._get_sale_searchbar_sortings() # default sortby order