[MERGE] from trunk-website-event-chm: managment of tickets for an event to defined...
[odoo/odoo.git] / addons / website_sale / controllers / main.py
index 71a36d9..56cfa8d 100644 (file)
@@ -12,7 +12,8 @@ def get_order(order_id=None):
     # check if order allready exists
     if order_id:
         try:
-            order_obj.browse(request.cr, openerp.SUPERUSER_ID, order_id).pricelist_id
+            order = order_obj.browse(request.cr, openerp.SUPERUSER_ID, order_id)
+            order.pricelist_id
         except:
             order_id = None
     if not order_id:
@@ -21,24 +22,20 @@ def get_order(order_id=None):
         order_value['partner_id'] = request.registry.get('res.users').browse(request.cr, openerp.SUPERUSER_ID, request.uid).partner_id.id
         order_value.update(order_obj.onchange_partner_id(request.cr, openerp.SUPERUSER_ID, [], request.uid, context={})['value'])
         order_id = order_obj.create(request.cr, openerp.SUPERUSER_ID, order_value)
-    return order_obj.browse(request.cr, openerp.SUPERUSER_ID, order_id)
+        order = order_obj.browse(request.cr, openerp.SUPERUSER_ID, order_id)
+    return order
 
 def get_current_order():
     order = get_order(request.httprequest.session.get('ecommerce_order_id'))
+    if order.state != 'draft':
+        order = get_order()
     request.httprequest.session['ecommerce_order_id'] = order.id
     return order
 
-def get_categories():
-    category_obj = request.registry.get('pos.category')
-    category_ids = category_obj.search(request.cr, openerp.SUPERUSER_ID, [('parent_id', '=', False)])
-    return category_obj.browse(request.cr, openerp.SUPERUSER_ID, category_ids)
-
-
 class website(osv.osv):
     _inherit = "website"
     def get_rendering_context(self, additional_values=None):
         values = {
-            'website_sale_get_categories': get_categories,
             'order': get_current_order(),
             # 'website_sale_get_current_order': get_current_order, # TODO: replace 'order' key in templates
         }
@@ -55,31 +52,9 @@ class Ecommerce(http.Controller):
         print categories
         return categories
 
-    def get_current_order(self):
-        order = self.get_order(request.httprequest.session.get('ecommerce_order_id'))
-        request.httprequest.session['ecommerce_order_id'] = order.id
-        return order
-
-    def get_order(self, order_id=None):
-
-        order_obj = request.registry.get('sale.order')
-        # check if order allready exists
-        if order_id:
-            try:
-                order_obj.browse(request.cr, openerp.SUPERUSER_ID, order_id).pricelist_id
-            except:
-                order_id = None
-        if not order_id:
-            fields = [k for k, v in order_obj._columns.items()]
-            order_value = order_obj.default_get(request.cr, openerp.SUPERUSER_ID, fields)
-            order_value['partner_id'] = request.registry.get('res.users').browse(request.cr, openerp.SUPERUSER_ID, request.uid).partner_id.id
-            order_value.update(order_obj.onchange_partner_id(request.cr, openerp.SUPERUSER_ID, [], request.uid, context={})['value'])
-            order_id = order_obj.create(request.cr, openerp.SUPERUSER_ID, order_value)
-        return order_obj.browse(request.cr, openerp.SUPERUSER_ID, order_id)
-
     def render(self, template, values={}):
+        website = request.registry['website']
         _values = {
-            'order': self.get_current_order(),
             'categories': self.get_categories(),
         }
         _values.update(values)
@@ -156,7 +131,7 @@ class Ecommerce(http.Controller):
             'pages': pages,
             'page': page,
         })
-        return website.render("website_sale.products", values)
+        return self.render("website_sale.products", values)
 
     @http.route(['/shop/product/<product_id>'], type='http', auth="public")
     def product(self, cat_id=0, product_id=0):
@@ -174,7 +149,7 @@ class Ecommerce(http.Controller):
             'quantity': quantity,
             'recommended_products': self.recommended_product([product_id]),
         })
-        return website.render("website_sale.product", values)
+        return self.render("website_sale.product", values)
 
     @http.route(['/shop/mycart'], type='http', auth="public")
     def mycart(self, **post):
@@ -189,15 +164,14 @@ class Ecommerce(http.Controller):
 
         my_pids = [line.product_id.id for line in order.order_line]
         values = website.get_rendering_context({
-            "recommended_products": self.recommended_product(my_pids)
+            "recommended_products": self.recommended_product(my_pids),
         })
 
-        return website.render("website_sale.mycart", values)
+        return self.render("website_sale.mycart", values)
 
     @http.route(['/shop/add_cart'], type='http', auth="public")
     def add_cart(self, product_id=0, remove=False):
         website = request.registry['website']
-        values = website.get_rendering_context()
         context = {}
 
         order_line_obj = request.registry.get('sale.order.line')
@@ -209,6 +183,7 @@ class Ecommerce(http.Controller):
         quantity = 0
 
         # values initialisation
+        values = {}
         order_line_ids = order_line_obj.search(request.cr, openerp.SUPERUSER_ID, [('order_id', '=', order.id), ('product_id', '=', product_id)], context=context)
         if order_line_ids:
             order_line = order_line_obj.read(request.cr, openerp.SUPERUSER_ID, order_line_ids, [], context=context)[0]
@@ -235,7 +210,8 @@ class Ecommerce(http.Controller):
                 order_line_id = order_line_obj.create(request.cr, openerp.SUPERUSER_ID, values, context=context)
                 order.write({'order_line': [(4, order_line_id)]}, context=context)
 
-        html = website.render("website_sale.total", values)
+        values = website.get_rendering_context()
+        html = self.render("website_sale.total", values)
         return simplejson.dumps({"quantity": quantity, "totalHTML": html})
 
     @http.route(['/shop/remove_cart'], type='http', auth="public")
@@ -384,7 +360,7 @@ class Ecommerce(http.Controller):
             'temp': 0,
             'order': order_old,
         })
-        return website.render("website_sale.confirmed", values)
+        return self.render("website_sale.confirmed", values)
 
     @http.route(['/shop/publish'], type='http', auth="public")
     def publish(self, **post):