59 lines
2.1 KiB
Python
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
|
|
)
|