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)
-
- partner_id = user_obj.browse(request.cr, SUPERUSER_ID, request.uid,
- context=request.context).partner_id.id
- fields = [k for k, v in order_line_obj._columns.items()]
- values = order_line_obj.default_get(request.cr, SUPERUSER_ID, fields,
- context=request.context)
+ @http.route(['/event/cart/update'], type='http', auth="public", methods=['POST'], website=True)
+ def cart_update(self, event_id, **post):
+ cr, uid, context = request.cr, request.uid, request.context
+ ticket_obj = request.registry.get('event.event.ticket')
- _values = None
+ sale = False
for key, value in post.items():
- try:
- quantity = int(value)
- assert quantity > 0
- except:
- quantity = None
- ticket_id = key.split("-")[0] == 'ticket' and int(key.split("-")[1]) or None
- if not ticket_id or not quantity:
+ quantity = int(value or "0")
+ if not quantity:
continue
- ticket = ticket_obj.browse(request.cr, request.uid, ticket_id,
- context=request.context)
-
- values['product_id'] = ticket.product_id.id
- values['event_id'] = ticket.event_id.id
- values['event_ticket_id'] = ticket.id
- values['product_uom_qty'] = quantity
- values['price_unit'] = ticket.price
- values['order_id'] = order.id
- values['name'] = "%s: %s" % (ticket.event_id.name, ticket.name)
-
- # change and record value
- pricelist_id = order.pricelist_id and order.pricelist_id.id or False
- _values = order_line_obj.product_id_change(
- request.cr, SUPERUSER_ID, [], pricelist_id, ticket.product_id.id,
- partner_id=partner_id, context=request.context)['value']
+ sale = True
+ ticket_id = key.split("-")[0] == 'ticket' and int(key.split("-")[1]) or None
+ ticket = ticket_obj.browse(cr, SUPERUSER_ID, ticket_id, context=context)
+ request.website.sale_get_order(force_create=1)._cart_update(
+ product_id=ticket.product_id.id, add_qty=quantity, context=dict(context, event_ticket_id=ticket.id))
if 'tax_id' in _values:
_values['tax_id'] = [(6, 0, _values['tax_id'])]
- _values.update(values)
-
- order_line_id = order_line_obj.create(request.cr, SUPERUSER_ID, _values, context=request.context)
- order_obj.write(request.cr, SUPERUSER_ID, [order.id], {'order_line': [(4, order_line_id)]}, context=request.context)
- if not _values:
- return request.redirect("/event/%s/" % event_id)
+ if not sale:
+ return request.redirect("/event/%s" % event_id)
return request.redirect("/shop/checkout")
def _add_event(self, event_name="New Event", context={}, **kwargs):
try:
- print kwargs
dummy, res_id = request.registry.get('ir.model.data').get_object_reference(request.cr, request.uid, 'event_sale', 'product_product_event')
context['default_event_ticket_ids'] = [[0,0,{
'name': _('Subscription'),