This commit adds a new display type for a product page, namely the grid mode. The web designer will now be able to choose between carousel (previous mode) and grid. The web designer may also choose how much space the images take on the page between 0%, 50% 66% and 100%. TaskId-2833507 Part-of: odoo/odoo#92447
34 lines
1.9 KiB
Python
34 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
from odoo import http
|
|
from odoo.http import request
|
|
|
|
from odoo.addons.sale.controllers.variant import VariantController
|
|
|
|
|
|
class WebsiteSaleVariantController(VariantController):
|
|
@http.route(['/sale/get_combination_info_website'], type='json', auth="public", methods=['POST'], website=True)
|
|
def get_combination_info_website(self, product_template_id, product_id, combination, add_qty, **kw):
|
|
"""Special route to use website logic in get_combination_info override.
|
|
This route is called in JS by appending _website to the base route.
|
|
"""
|
|
kw.pop('pricelist_id')
|
|
combination = self.get_combination_info(product_template_id, product_id, combination, add_qty, request.website.get_current_pricelist(), **kw)
|
|
|
|
if request.website.google_analytics_key:
|
|
combination['product_tracking_info'] = request.env['product.template'].get_google_analytics_data(combination)
|
|
|
|
if request.website.product_page_image_width != 'none':
|
|
carousel_view = request.env['ir.ui.view']._render_template('website_sale.shop_product_images', values={
|
|
'product': request.env['product.template'].browse(combination['product_template_id']),
|
|
'product_variant': request.env['product.product'].browse(combination['product_id']),
|
|
'website': request.env['website'].get_current_website(),
|
|
})
|
|
combination['carousel'] = carousel_view
|
|
return combination
|
|
|
|
@http.route(auth="public")
|
|
def create_product_variant(self, product_template_id, product_template_attribute_value_ids, **kwargs):
|
|
"""Override because on the website the public user must access it."""
|
|
return super(WebsiteSaleVariantController, self).create_product_variant(product_template_id, product_template_attribute_value_ids, **kwargs)
|