From 571d9044d6999929fffc152d8974cd4de226e644 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Mon, 19 Aug 2013 12:41:44 +0200 Subject: [PATCH] [IMP] website_sale: add suggested products bzr revid: chm@openerp.com-20130819104144-81w0c3cicdqdf9ix --- addons/website_sale/controllers/main.py | 15 ++- addons/website_sale/views/website_sale.xml | 110 +++++++++++++++++---- addons/website_sale/website_sale.py | 2 + 3 files changed, 109 insertions(+), 18 deletions(-) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 67833560fc6..f58c23fb4da 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -4,6 +4,7 @@ from openerp import SUPERUSER_ID from openerp.osv import osv from openerp.addons.web import http from openerp.addons.web.http import request +import random import werkzeug def get_order(order_id=None): @@ -105,15 +106,27 @@ class Ecommerce(http.Controller): def mycart(self, **post): order = get_current_order() website = request.registry['website'] + prod_obj = request.registry.get('product.product') if post.get('code'): pricelist_obj = request.registry.get('product.pricelist') pricelist_ids = pricelist_obj.search(request.cr, SUPERUSER_ID, [('code', '=', post.get('code'))]) if pricelist_ids: order.write({'pricelist_id': pricelist_ids[0]}) - + + suggested_ids = [] + for line in order.order_line: + suggested_ids += [p.id for p in line.product_id.suggested_product_ids for line in order.order_line] + suggested_ids = prod_obj.search(request.cr, request.uid, [('id', 'in', suggested_ids)]) + # select 3 random products + suggested_products = [] + while len(suggested_products) < 3 and suggested_ids: + index = random.randrange(0, len(suggested_ids)) + suggested_products.append(suggested_ids.pop(index)) + values = website.get_rendering_context({ 'categories': self.get_categories(), + 'suggested_products': prod_obj.browse(request.cr, request.uid, suggested_products), }) return website.render("website_sale.mycart", values) diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml index 9f310ce180e..648f6ce4d20 100644 --- a/addons/website_sale/views/website_sale.xml +++ b/addons/website_sale/views/website_sale.xml @@ -38,6 +38,7 @@ + @@ -169,19 +170,24 @@ -