From 07b5cb38a0d79a0a0bb0317ed91d50842b6f1562 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 25 Feb 2014 13:57:36 +0100 Subject: [PATCH] [IMP] website_sale: refactoring: website_event_sale: fix for refactoring bzr revid: chm@openerp.com-20140225125736-dni507i8xpz1b61j --- addons/website_event_sale/controllers/main.py | 6 +- .../website_event_sale/models/sale_order.py | 2 +- addons/website_sale/controllers/main.py | 65 +++++++++---------- addons/website_sale/models/sale_order.py | 14 ++-- .../static/src/js/website_sale.js | 13 ++-- addons/website_sale/views/templates.xml | 1 + 6 files changed, 45 insertions(+), 56 deletions(-) diff --git a/addons/website_event_sale/controllers/main.py b/addons/website_event_sale/controllers/main.py index cc9ddc0ad56..7f65c2aa615 100644 --- a/addons/website_event_sale/controllers/main.py +++ b/addons/website_event_sale/controllers/main.py @@ -27,17 +27,15 @@ from openerp.tools.translate import _ class website_event(website_event): + @http.route(['/event/add_cart'], type='http', auth="public", website=True, multilang=True) def add_cart(self, event_id, **post): user_obj = request.registry['res.users'] order_line_obj = request.registry.get('sale.order.line') ticket_obj = request.registry.get('event.event.ticket') order_obj = request.registry.get('sale.order') - website = request.registry['website'] - order = website.ecommerce_get_current_order(request.cr, request.uid, context=request.context) - if not order: - order = website.ecommerce_get_new_order(request.cr, request.uid, context=request.context) + order = request.website.sale_get_order(force_create=1) partner_id = user_obj.browse(request.cr, SUPERUSER_ID, request.uid, context=request.context).partner_id.id diff --git a/addons/website_event_sale/models/sale_order.py b/addons/website_event_sale/models/sale_order.py index b94111ac868..50854c5f798 100644 --- a/addons/website_event_sale/models/sale_order.py +++ b/addons/website_event_sale/models/sale_order.py @@ -12,7 +12,7 @@ class sale_order_line(osv.osv): return super(sale_order_line, self)._recalculate_product_values(cr, uid, ids, product_id, context=context) order_line = self.browse(cr, SUPERUSER_ID, ids[0], context=context) - assert order_line.order_id.website_session_id == request.httprequest.session['website_session_id'] + assert order_line.order_id.id == request.session.get('sale_last_order_id') product = product_id and self.pool.get('product.product').browse(cr, uid, product_id, context=context) or order_line.product_id res = super(sale_order_line, self)._recalculate_product_values(cr, uid, ids, product.id, context=context) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 2ff14ddee82..09bb12ef210 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -207,18 +207,6 @@ class website_sale(http.Controller): context=dict(context, mail_create_nosubcribe=True)) return werkzeug.utils.redirect(request.httprequest.referrer + "#comments") - @http.route(['/shop/add_product/'], type='http', auth="user", methods=['POST'], website=True, multilang=True) - def add_product(self, name=None, category=0, **post): - if not name: - name = _("New Product") - Product = request.registry.get('product.product') - product_id = Product.create(request.cr, request.uid, { - 'name': name, 'public_categ_id': category - }, context=request.context) - product = Product.browse(request.cr, request.uid, product_id, context=request.context) - - return request.redirect("/shop/product/%s/?enable_editor=1" % product.product_tmpl_id.id) - @http.route(['/shop/cart'], type='http', auth="public", website=True, multilang=True) def cart(self, **post): order = request.website.sale_get_order() @@ -245,12 +233,15 @@ class website_sale(http.Controller): return { 'quantity': quantity, 'cart_quantity': order.cart_quantity, - 'website_sale.total': request.website._render("website_sale.total", {'website_sale_order': order}) # FIXME good template + 'website_sale.total': request.website._render("website_sale.total", { + 'website_sale_order': request.website.sale_get_order() + }) } #------------------------------------------------------ # Checkout #------------------------------------------------------ + def checkout_redirection(self, order): cr, uid, context, registry = request.cr, request.uid, request.context, request.registry @@ -454,6 +445,7 @@ class website_sale(http.Controller): return request.website.render("website_sale.checkout", values) self.checkout_form_save(values["checkout"]) + request.session['sale_last_order_id'] = order.id return request.redirect("/shop/payment") @@ -494,10 +486,10 @@ class website_sale(http.Controller): values.update(request.registry.get('sale.order')._get_website_data(cr, uid, order, context)) # fetch all registered payment means - if tx: - acquirer_ids = [tx.acquirer_id.id] - else: - acquirer_ids = payment_obj.search(cr, SUPERUSER_ID, [('website_published', '=', True)], context=context) + # if tx: + # acquirer_ids = [tx.acquirer_id.id] + # else: + acquirer_ids = payment_obj.search(cr, SUPERUSER_ID, [('website_published', '=', True)], context=context) values['acquirers'] = payment_obj.browse(cr, uid, acquirer_ids, context=context) render_ctx = dict(context, submit_class='btn btn-primary', submit_txt='Pay Now') for acquirer in values['acquirers']: @@ -536,7 +528,7 @@ class website_sale(http.Controller): return request.redirect("/shop/checkout/") # find an already existing transaction - tx = context.get('website_sale_transaction') + tx = request.website.sale_get_transaction() if not tx: tx_id = transaction_obj.create(cr, SUPERUSER_ID, { 'acquirer_id': acquirer_id, @@ -547,8 +539,8 @@ class website_sale(http.Controller): 'reference': order.name, 'sale_order_id': order.id, }, context=context) - request.httprequest.session['website_sale_transaction_id'] = tx_id - elif tx and tx.state == 'draft': # button cliked but no more info -> rewrite on tx or create a new one ? + request.session['sale_transaction_id'] = tx_id + elif tx.state == 'draft': # button cliked but no more info -> rewrite on tx or create a new one ? tx.write({ 'acquirer_id': acquirer_id, }) @@ -562,7 +554,7 @@ class website_sale(http.Controller): cr, uid, context = request.cr, request.uid, request.context order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context) - assert order.website_session_id == request.httprequest.session['website_session_id'] + assert order.id == request.session.get('sale_last_order_id') if not order: return { @@ -617,7 +609,7 @@ class website_sale(http.Controller): sale_order_obj = request.registry['sale.order'] if transaction_id is None: - tx = context.get('website_sale_transaction') + tx = request.website.sale_get_transaction() else: tx = request.registry['payment.transaction'].browse(cr, uid, transaction_id, context=context) @@ -625,7 +617,7 @@ class website_sale(http.Controller): order = request.website.sale_get_order(context=context) else: order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context) - assert order.website_session_id == request.httprequest.session['website_session_id'] + assert order.id == request.session.get('sale_last_order_id') if not tx or not order: return request.redirect('/shop/') @@ -643,12 +635,12 @@ class website_sale(http.Controller): sale_order_obj.action_cancel(cr, SUPERUSER_ID, [order.id], context=request.context) # clean context and session, then redirect to the confirmation page - request.registry['website'].ecommerce_reset(cr, uid, context=context) + request.website.sale_reset(context=context) - return request.redirect('/shop/confirmation/%s' % order.id) + return request.redirect('/shop/confirmation/') - @http.route(['/shop/confirmation/'], type='http', auth="public", website=True, multilang=True) - def payment_confirmation(self, sale_order_id, **post): + @http.route(['/shop/confirmation/'], type='http', auth="public", website=True, multilang=True) + def payment_confirmation(self, **post): """ End of checkout process controller. Confirmation is basically seing the status of a sale.order. State at this point : @@ -658,10 +650,11 @@ class website_sale(http.Controller): """ cr, uid, context = request.cr, request.uid, request.context - order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context) - assert order.website_session_id == request.httprequest.session['website_session_id'] - - request.registry['website']._ecommerce_change_pricelist(cr, uid, None, context=context or {}) + sale_order_id = request.session.get('sale_last_order_id') + if sale_order_id: + order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context) + else: + return request.redirect('/shop/') return request.website.render("website_sale.confirmation", {'order': order}) @@ -669,12 +662,14 @@ class website_sale(http.Controller): # Edit #------------------------------------------------------ - @http.route(['/shop/add_product'], type='http', auth="user", methods=['POST'], website=True, multilang=True) - def add_product(self, name="New Product", category=0, **post): + @http.route(['/shop/add_product/'], type='http', auth="user", methods=['POST'], website=True, multilang=True) + def add_product(self, name=None, category=0, **post): cr, uid, context, pool = request.cr, request.uid, request.context, request.registry - product_obj = pool['product.product'] + if not name: + name = _("New Product") + product_obj = request.registry.get('product.product') product_id = product_obj.create(cr, uid, { 'name': name, 'public_categ_id': category }, context=context) - product = product_obj.browse(cr, uid, product_id, context=request.context) + product = product_obj.browse(cr, uid, product_id, context=context) return request.redirect("/shop/product/%s/?enable_editor=1" % product.product_tmpl_id.id) diff --git a/addons/website_sale/models/sale_order.py b/addons/website_sale/models/sale_order.py index 5e2df03e5cf..3f1de739218 100644 --- a/addons/website_sale/models/sale_order.py +++ b/addons/website_sale/models/sale_order.py @@ -107,7 +107,7 @@ class website(orm.Model): return [("sale_ok", "=", True)] def sale_get_order(self, cr, uid, ids, force_create=False, code=None, context=None): - sale_order_id = request.httprequest.session.get('sale_order_id') + sale_order_id = request.session.get('sale_order_id') sale_order = None # create so if needed if not sale_order_id and (force_create or code): @@ -122,7 +122,7 @@ class website(orm.Model): sale_order_id = self.pool['sale.order'].create(cr, SUPERUSER_ID, values, context=context) values = self.pool['sale.order'].onchange_partner_id(cr, SUPERUSER_ID, [], partner.id, context=context)['value'] self.pool['sale.order'].write(cr, SUPERUSER_ID, [sale_order_id], values, context=context) - request.httprequest.session['sale_order_id'] = sale_order_id + request.session['sale_order_id'] = sale_order_id if sale_order_id: # TODO cache partner_id session partner = self.pool['res.users'].browse(cr, SUPERUSER_ID, uid, context=context).partner_id @@ -146,19 +146,19 @@ class website(orm.Model): self.pool['sale.order'].write(cr, SUPERUSER_ID, [sale_order_id], values, context=context) return sale_order - def sale_get_transaction(self, cr, uid, context=None): + def sale_get_transaction(self, cr, uid, ids, context=None): transaction_obj = self.pool.get('payment.transaction') - tx_id = request.httprequest.session.get('payment_transaction_id') + tx_id = request.session.get('sale_transaction_id') if tx_id: tx_ids = transaction_obj.search(cr, uid, [('id', '=', tx_id), ('state', 'not in', ['cancel'])], context=context) if tx_ids: return transaction_obj.browse(cr, uid, tx_ids[0], context=context) else: - request.httprequest.session['payment_transaction_id'] = False + request.session['sale_transaction_id'] = False return False - def sale_reset(self, cr, uid, context=None): - request.httprequest.session.update({ + def sale_reset(self, cr, uid, ids, context=None): + request.session.update({ 'sale_order_id': False, 'sale_transaction_id': False, }) diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index 67b38bce1f9..8b3c83d3a73 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -12,14 +12,6 @@ $(document).ready(function () { $(ev.currentTarget).parents(".thumbnail").toggleClass("disabled"); }); - function set_my_cart_quantity(qty) { - var $q = $(".my_cart_quantity"); - $q.parent().parent().removeClass("hidden", !qty); - $q.html(qty) - .hide() - .fadeIn(600); - } - $(".oe_website_sale .oe_cart input.js_quantity").change(function () { var $input = $(this); var value = parseInt($input.val(), 10); @@ -32,8 +24,11 @@ $(document).ready(function () { location.reload(); return; } - set_my_cart_quantity(data.cart_quantity); + var $q = $(".my_cart_quantity"); + $q.parent().parent().removeClass("hidden", !data.quantity); + $q.html(data.cart_quantity).hide().fadeIn(600); $input.val(data.quantity); + $("#cart_total").replaceWith(data['website_sale.total']); }); }); diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index bf8cc68b766..48b778c29e9 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -844,6 +844,7 @@

Validate Order

+