Files
enterprise-addons/website_sale_renting/controllers/cart.py
T

59 lines
2.1 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields
from odoo.http import request, route
from odoo.addons.website_sale.controllers.cart import Cart as WebsiteSaleCart
class Cart(WebsiteSaleCart):
@route(
'/shop/cart/update_renting',
type='jsonrpc',
auth='public',
methods=['POST'],
website=True
)
def update_cart_renting(self, start_date=None, end_date=None):
""" Route to check the cart availability when changing the dates on the cart. """
try:
start_date = fields.Datetime.to_datetime(start_date)
end_date = fields.Datetime.to_datetime(end_date)
except ValueError:
start_date = end_date = None
if not (start_date and end_date and (order_sudo := request.cart)):
return {}
order_sudo._cart_update_renting_period(start_date, end_date)
values = {
'cart_quantity': order_sudo.cart_quantity,
'cart_ready': order_sudo._is_cart_ready(),
}
values['website_sale.cart_lines'] = request.env['ir.ui.view']._render_template(
'website_sale.cart_lines', {
'website_sale_order': order_sudo,
'date': fields.Date.today(),
'suggested_products': order_sudo._cart_accessories(),
}
)
values['website_sale.total'] = request.env['ir.ui.view']._render_template(
'website_sale.total', {
'website_sale_order': order_sudo,
}
)
return {
'start_date': order_sudo.rental_start_date,
'end_date': order_sudo.rental_return_date,
'values': values,
}
@route()
def add_to_cart(self, *args, start_date=None, end_date=None, **kwargs):
""" Override to parse to datetime optional pickup and return dates. """
start_date = fields.Datetime.to_datetime(start_date)
end_date = fields.Datetime.to_datetime(end_date)
return super().add_to_cart(
*args, start_date=start_date, end_date=end_date, **kwargs
)