From d8f0837f94b3de63db34bcf835c672e271b20733 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Thu, 27 Sep 2018 10:41:02 +0200 Subject: [PATCH] [FIX] website: last_website_so_id is website dependent Before this commit, if you use this field outside of a controller website, it will fail because this field depend of request.website that is only set on controller of type website. Now we return False if we call try to use this field outside of the website. Eg: call get_current_pricelist in json --- addons/website_sale/models/res_partner.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/website_sale/models/res_partner.py b/addons/website_sale/models/res_partner.py index 9b1651b5176..65139caf85b 100644 --- a/addons/website_sale/models/res_partner.py +++ b/addons/website_sale/models/res_partner.py @@ -2,6 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import api, fields, models +from odoo.http import request class ResPartner(models.Model): @@ -12,6 +13,11 @@ class ResPartner(models.Model): @api.multi def _compute_last_website_so_id(self): SaleOrder = self.env['sale.order'] + website_team = self.env.ref('sales_team.salesteam_website_sales', raise_if_not_found=False) for partner in self: - current_website_so = SaleOrder.search([('partner_id', '=', partner.id)]).filtered(lambda so: so.order_line.mapped('product_id.product_tmpl_id').can_access_from_current_website()) - partner.last_website_so_id = current_website_so and current_website_so[0] + if request and hasattr(request, 'website'): + my_website_so = SaleOrder.search([('partner_id', '=', partner.id), ('team_id', '=', website_team.id)]) + current_website_orders = my_website_so.filtered(lambda so: so.order_line.mapped('product_id.product_tmpl_id').can_access_from_current_website()) + partner.last_website_so_id = current_website_orders and current_website_orders[0] + else: + partner.last_website_so_id = False # Not in a website context