[IMP] website_sale: improve performance, use less db request to have pricelist data
Use pricelist in the context instead of pricelist id.
This commit is contained in:
@@ -10,10 +10,10 @@ class WebsiteEventSaleController(WebsiteEventController):
|
||||
|
||||
@http.route(['/event/<model("event.event"):event>/register'], type='http', auth="public", website=True)
|
||||
def event_register(self, event, **post):
|
||||
pricelist_id = int(request.website.get_current_pricelist())
|
||||
event = event.with_context(pricelist=request.website.get_current_pricelist().id)
|
||||
values = {
|
||||
'event': event.with_context(pricelist=pricelist_id),
|
||||
'main_object': event.with_context(pricelist=pricelist_id),
|
||||
'event': event,
|
||||
'main_object': event,
|
||||
'range': range,
|
||||
}
|
||||
return request.render("website_event.event_description_full", values)
|
||||
|
||||
@@ -20,6 +20,10 @@ class SaleOrder(models.Model):
|
||||
|
||||
@api.multi
|
||||
def _website_product_id_change(self, order_id, product_id, qty=0):
|
||||
order = self.env['sale.order'].sudo().browse(order_id)
|
||||
if self._context.get('pricelist') != order.pricelist_id.id:
|
||||
self = self.with_context(pricelist=order.pricelist_id.id)
|
||||
|
||||
values = super(SaleOrder, self)._website_product_id_change(order_id, product_id, qty=qty)
|
||||
event_ticket_id = None
|
||||
if self.env.context.get("event_ticket_id"):
|
||||
@@ -30,8 +34,7 @@ class SaleOrder(models.Model):
|
||||
event_ticket_id = product.event_ticket_ids[0].id
|
||||
|
||||
if event_ticket_id:
|
||||
order = self.env['sale.order'].sudo().browse(order_id)
|
||||
ticket = self.env['event.event.ticket'].with_context(pricelist=order.pricelist_id.id).browse(event_ticket_id)
|
||||
ticket = self.env['event.event.ticket'].browse(event_ticket_id)
|
||||
if product_id != ticket.product_id.id:
|
||||
raise UserError(_("The ticket doesn't match with this product."))
|
||||
|
||||
@@ -54,7 +57,8 @@ class SaleOrder(models.Model):
|
||||
line = OrderLine.browse(line_id)
|
||||
ticket = line.event_ticket_id
|
||||
old_qty = int(line.product_uom_qty)
|
||||
self = self.with_context(event_ticket_id=ticket.id)
|
||||
if ticket.id:
|
||||
self = self.with_context(event_ticket_id=ticket.id)
|
||||
else:
|
||||
line = None
|
||||
ticket = self.env['event.event.ticket'].search([('product_id', '=', product_id)], limit=1)
|
||||
|
||||
@@ -390,7 +390,7 @@ class WebsiteSale(http.Controller):
|
||||
value['website_sale.cart_lines'] = request.env['ir.ui.view'].render_template("website_sale.cart_lines", {
|
||||
'website_sale_order': order,
|
||||
'compute_currency': lambda price: from_currency.compute(price, to_currency),
|
||||
'suggested_products': order.with_context(pricelist=order.pricelist_id.id)._cart_accessories()
|
||||
'suggested_products': order._cart_accessories()
|
||||
})
|
||||
return value
|
||||
|
||||
|
||||
@@ -301,8 +301,6 @@ class Website(models.Model):
|
||||
# Do not reload the cart of this user last visit if the cart is no longer draft or uses a pricelist no longer available.
|
||||
sale_order_id = last_order.state == 'draft' and last_order.pricelist_id in available_pricelists and last_order.id
|
||||
|
||||
# Test validity of the sale_order_id
|
||||
sale_order = self.env['sale.order'].sudo().browse(sale_order_id).exists() if sale_order_id else None
|
||||
pricelist_id = request.session.get('website_sale_current_pl') or self.get_current_pricelist().id
|
||||
|
||||
if self.env['product.pricelist'].browse(force_pricelist).exists():
|
||||
@@ -310,6 +308,12 @@ class Website(models.Model):
|
||||
request.session['website_sale_current_pl'] = pricelist_id
|
||||
update_pricelist = True
|
||||
|
||||
if not self._context.get('pricelist'):
|
||||
self = self.with_context(pricelist=pricelist_id)
|
||||
|
||||
# Test validity of the sale_order_id
|
||||
sale_order = self.env['sale.order'].sudo().browse(sale_order_id).exists() if sale_order_id else None
|
||||
|
||||
# create so if needed
|
||||
if not sale_order and (force_create or code):
|
||||
# TODO cache partner_id session
|
||||
|
||||
@@ -55,7 +55,7 @@ class WebsiteSaleOptions(WebsiteSale):
|
||||
pricelist = request.website.get_current_pricelist()
|
||||
product_context = dict(request.context)
|
||||
if not product_context.get('pricelist'):
|
||||
product_context['pricelist'] = int(pricelist)
|
||||
product_context['pricelist'] = pricelist.id
|
||||
# fetch quantity from custom context
|
||||
product_context.update(kw.get('kwargs', {}).get('context', {}))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user