[MERGE] forward port of branch saas-3 up to fdc6271
[odoo/odoo.git] / addons / website_event_sale / controllers / main.py
index 2a221d7..ff697b1 100644 (file)
@@ -27,65 +27,31 @@ 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)
-
-        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'),