odoo/ext/clarico-addons/clarico_similar_product/controller/main.py

45 lines
2.1 KiB
Python
Executable File

import odoo
from odoo import http
from odoo.http import request
class claricoSimilarProduct(http.Controller):
@http.route(['/suggest_product'], type='json', auth="public", website=True)
def fetchProduct(self,product_id=None, **kwargs):
Rating = request.env['rating.rating']
pricelist_context = dict(request.env.context)
if not pricelist_context.get('pricelist'):
pricelist = request.website.get_current_pricelist()
pricelist_context['pricelist'] = pricelist.id
else:
pricelist = request.env['product.pricelist'].browse(pricelist_context['pricelist'])
request.context = dict(request.context, pricelist=pricelist.id, partner=request.env.user.partner_id)
rating_templates = {}
compute_currency=""
if product_id :
product_record = request.env['product.template'].search([['id','=',product_id]])
values = {}
for product_t in product_record.alternative_product_ids:
products = request.env['product.template'].browse(product_t.id)
ratings = Rating.search([('message_id', 'in', products.website_message_ids.ids)])
rating_message_values = dict([(record.message_id.id, record.rating) for record in ratings])
rating_product = products.rating_get_stats([('website_published', '=', True)])
rating_templates[products.id] = rating_product
from_currency = request.env.user.company_id.currency_id
to_currency = pricelist.currency_id
compute_currency = lambda price: from_currency.compute(price, to_currency)
if product_record.alternative_product_ids:
values={
'product':product_record,
'rating_product': rating_templates,
'compute_currency': compute_currency,
'pricelist': pricelist,
}
response = http.Response(template="clarico_similar_product.clarico_similar_product_record",qcontext=values)
return response.render()