[IMP] website_sale: refactoring: website_event_sale: fix for refactoring

bzr revid: chm@openerp.com-20140225125736-dni507i8xpz1b61j
This commit is contained in:
Christophe Matthieu 2014-02-25 13:57:36 +01:00
parent a5ca54fd5b
commit 07b5cb38a0
6 changed files with 45 additions and 56 deletions

View File

@ -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

View File

@ -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)

View File

@ -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/<int:sale_order_id>'], 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)

View File

@ -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,
})

View File

@ -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']);
});
});

View File

@ -844,6 +844,7 @@
<h1 class="mb32">Validate Order</h1>
<div class="row">
<div class="col-lg-8 col-sm-9 oe_cart">
<t t-set="website_sale_order" t-value="website.sale_get_order()"/>
<table class='table table-striped table-condensed' id="cart_products" t-if="website_sale_order and website_sale_order.website_order_line">
<thead>
<tr>