diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py
index 6724fb21c0e..c208e620092 100644
--- a/addons/website_event/controllers/main.py
+++ b/addons/website_event/controllers/main.py
@@ -25,6 +25,7 @@ from openerp.addons.web.http import request
from openerp.tools.translate import _
from openerp.addons.website.models import website
from openerp.addons.website.controllers.main import Website as controllers
+from openerp.addons.website_sale.controllers.main import Ecommerce as Ecommerce
controllers = controllers()
@@ -33,6 +34,9 @@ from dateutil.relativedelta import relativedelta
from openerp import tools
import urllib
+# remove product event from the website content grid and list view (not removed in detail view)
+Ecommerce.domain += [('event_ok', '=', False)]
+
class website_event(http.Controller):
@website.route(['/event/', '/event/page/
'], type='http', auth="public", multilang=True)
def events(self, page=1, **searches):
diff --git a/addons/website_event/views/website_event.xml b/addons/website_event/views/website_event.xml
index e4999c0b296..56a53c81a72 100644
--- a/addons/website_event/views/website_event.xml
+++ b/addons/website_event/views/website_event.xml
@@ -262,7 +262,16 @@
|
- |
+
+
+
+
+ Free
+
+ |
left
diff --git a/addons/website_sale/controllers/__init__.py b/addons/website_sale/controllers/__init__.py
index ef613dca3d5..8ee9bae18d9 100644
--- a/addons/website_sale/controllers/__init__.py
+++ b/addons/website_sale/controllers/__init__.py
@@ -1,2 +1 @@
-import website
import main
diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py
index 23f3c69afa7..a8f59098a6b 100644
--- a/addons/website_sale/controllers/main.py
+++ b/addons/website_sale/controllers/main.py
@@ -69,6 +69,12 @@ class Ecommerce(http.Controller):
return (categories, full_category_ids)
+ def get_pricelist(self):
+ return request.registry.get('website').get_pricelist_id(request.cr, request.uid, None, context=request.context)
+
+ def change_pricelist(self):
+ return request.registry.get('website').change_pricelist_id(request.cr, request.uid, None, context=request.context)
+
def get_bin_packing_products(self, product_ids, fill_hole, col_number=4):
"""
Packing all products of the search into a table of #col_number columns in function of the product sizes
@@ -368,42 +374,13 @@ class Ecommerce(http.Controller):
return request.redirect("/shop/product/%s/?enable_editor=1" % product.product_tmpl_id.id)
- def get_pricelist(self):
- if not request.httprequest.session.get('ecommerce_pricelist'):
- self.change_pricelist(None)
- return request.httprequest.session.get('ecommerce_pricelist')
-
- def change_pricelist(self, code):
- request.httprequest.session.setdefault('ecommerce_pricelist', False)
-
- pricelist_id = False
- if code:
- pricelist_obj = request.registry.get('product.pricelist')
- pricelist_ids = pricelist_obj.search(request.cr, SUPERUSER_ID, [('code', '=', code)], context=request.context)
- if pricelist_ids:
- pricelist_id = pricelist_ids[0]
-
- if not pricelist_id:
- partner_id = request.registry.get('res.users').browse(request.cr, SUPERUSER_ID, request.uid, request.context).partner_id.id
- pricelist_id = request.registry['sale.order'].onchange_partner_id(request.cr, SUPERUSER_ID, [], partner_id, context=request.context)['value']['pricelist_id']
-
- request.httprequest.session['ecommerce_pricelist'] = pricelist_id
-
- order = request.registry['website'].get_current_order(request.cr, request.uid, context=request.context)
- if order:
- values = {'pricelist_id': pricelist_id}
- values.update(order.onchange_pricelist_id(pricelist_id, None)['value'])
- order.write(values)
- for line in order.order_line:
- self.add_product_to_cart(order_line_id=line.id, number=0)
-
def add_product_to_cart(self, product_id=0, order_line_id=0, number=1, set_number=-1):
order_line_obj = request.registry.get('sale.order.line')
order_obj = request.registry.get('sale.order')
- order = request.registry.get('website').get_current_order(request.cr, request.uid, context=request.context)
+ order = website.get_current_order(request.cr, request.uid, context=request.context)
if not order:
- order = request.registry.get('website')._get_order(request.cr, request.uid, context=request.context)
+ order = website._get_order(request.cr, request.uid, context=request.context)
request.context = dict(request.context, pricelist=self.get_pricelist())
diff --git a/addons/website_sale/controllers/website.py b/addons/website_sale/controllers/website.py
deleted file mode 100644
index 949b2263617..00000000000
--- a/addons/website_sale/controllers/website.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: utf-8 -*-
-import uuid
-
-from openerp import SUPERUSER_ID
-from openerp.osv import osv
-from openerp.addons.web.http import request
-
-
-class Website(osv.Model):
- _inherit = "website"
-
- def _get_order(self, cr, uid, order_id=None, context=None):
- order_obj = request.registry.get('sale.order')
- # check if order allready exists and have access
- if order_id:
- if not order_id in order_obj.exists(cr, uid, [order_id], context=context):
- return False
- try:
- order = order_obj.browse(cr, uid, order_id, context=context)
- if order:
- return order
- except:
- return False
-
- fields = [k for k, v in order_obj._columns.items()]
- order_value = order_obj.default_get(cr, SUPERUSER_ID, fields, context=context)
- if request.httprequest.session.get('ecommerce_pricelist'):
- order_value['pricelist_id'] = request.httprequest.session['ecommerce_pricelist']
- order_value['partner_id'] = request.registry.get('res.users').browse(cr, SUPERUSER_ID, uid, context=context).partner_id.id
- order_value.update(order_obj.onchange_partner_id(cr, SUPERUSER_ID, [], order_value['partner_id'], context=context)['value'])
-
- # add website_session_id key for access rules
- if not request.httprequest.session.get('website_session_id'):
- request.httprequest.session['website_session_id'] = str(uuid.uuid4())
-
- order_value["website_session_id"] = request.httprequest.session['website_session_id']
- order_id = order_obj.create(cr, SUPERUSER_ID, order_value, context=context)
- order = order_obj.browse(cr, SUPERUSER_ID, order_id, context=context)
- request.httprequest.session['ecommerce_order_id'] = order.id
-
- return order_obj.browse(cr, uid, order_id,
- context=dict(request.context, pricelist=order.pricelist_id.id))
-
- def get_current_order(self, cr, uid, context=None):
- if request.httprequest.session.get('ecommerce_order_id'):
- order = self._get_order(cr, uid, order_id=request.httprequest.session['ecommerce_order_id'], context=context)
- if not order:
- request.httprequest.session['ecommerce_order_id'] = False
- return order
- return False
-
- def _get_transaction(self, cr, uid, tx_id=None, context=None):
- transaction_obj = request.registry['payment.transaction']
- 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)
- return False
-
- def get_current_transaction(self, cr, uid, context=None):
- if request.httprequest.session.get('website_sale_transaction_id'):
- tx = self._get_transaction(cr, uid, tx_id=request.httprequest.session['website_sale_transaction_id'], context=context)
- if not tx:
- request.httprequest.session['website_sale_transaction_id'] = False
- return tx
- return False
-
- def sale_reset_order(self, cr, uid, context=None):
- request.httprequest.session.update({
- 'ecommerce_order_id': False,
- 'ecommerce_pricelist': False,
- 'website_sale_transaction_id': False,
- })
- request.context.update({
- 'website_sale_order': False,
- 'website_sale_transaction': False,
- })
-
- def preprocess_request(self, cr, uid, ids, request, context=None):
- request.context.update({
- 'website_sale_order': self.get_current_order(cr, uid, context=context),
- 'website_sale_transaction': self.get_current_transaction(cr, uid, context=context)
- })
- return super(Website, self).preprocess_request(cr, uid, ids, request, context=None)
diff --git a/addons/website_sale/models/website.py b/addons/website_sale/models/website.py
index a659a35ba6e..3d2d1b30631 100644
--- a/addons/website_sale/models/website.py
+++ b/addons/website_sale/models/website.py
@@ -1,6 +1,8 @@
# -*- coding: utf-8 -*-
+import uuid
from openerp.osv import orm, fields
-from openerp.addons.web import http
+from openerp.addons.web.http import request
+from openerp import SUPERUSER_ID
class Website(orm.Model):
@@ -8,7 +10,7 @@ class Website(orm.Model):
def _get_pricelist(self, cr, uid, ids, field_name, arg, context=None):
# FIXME: oh god kill me now
- pricelist_id = http.request.httprequest.session['ecommerce_pricelist']
+ pricelist_id = self.get_pricelist_id(cr, uid, ids, context=context)
return dict.fromkeys(
ids, self.pool['product.pricelist'].browse(
cr, uid, pricelist_id, context=context))
@@ -17,3 +19,106 @@ class Website(orm.Model):
'pricelist_id': fields.function(
_get_pricelist, type='many2one', obj='product.pricelist')
}
+
+ def _get_order(self, cr, uid, order_id=None, context=None):
+ order_obj = self.pool.get('sale.order')
+ # check if order allready exists and have access
+ if order_id:
+ if not order_id in order_obj.exists(cr, uid, [order_id], context=context):
+ return False
+ try:
+ order = order_obj.browse(cr, uid, order_id, context=context)
+ if order:
+ return order
+ except:
+ return False
+
+ fields = [k for k, v in order_obj._columns.items()]
+ order_value = order_obj.default_get(cr, SUPERUSER_ID, fields, context=context)
+ if request.httprequest.session.get('ecommerce_pricelist'):
+ order_value['pricelist_id'] = request.httprequest.session['ecommerce_pricelist']
+ order_value['partner_id'] = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid, context=context).partner_id.id
+ order_value.update(order_obj.onchange_partner_id(cr, SUPERUSER_ID, [], order_value['partner_id'], context=context)['value'])
+
+ # add website_session_id key for access rules
+ if not request.httprequest.session.get('website_session_id'):
+ request.httprequest.session['website_session_id'] = str(uuid.uuid4())
+
+ order_value["website_session_id"] = request.httprequest.session['website_session_id']
+ order_id = order_obj.create(cr, SUPERUSER_ID, order_value, context=context)
+ order = order_obj.browse(cr, SUPERUSER_ID, order_id, context=context)
+ request.httprequest.session['ecommerce_order_id'] = order.id
+
+ return order_obj.browse(cr, uid, order_id,
+ context=dict(request.context, pricelist=order.pricelist_id.id))
+
+ def get_current_order(self, cr, uid, context=None):
+ if request.httprequest.session.get('ecommerce_order_id'):
+ order = self._get_order(cr, uid, order_id=request.httprequest.session['ecommerce_order_id'], context=context)
+ if not order:
+ request.httprequest.session['ecommerce_order_id'] = False
+ return order
+ return False
+
+ def _get_transaction(self, cr, uid, tx_id=None, context=None):
+ transaction_obj = self.pool.get('payment.transaction')
+ 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)
+ return False
+
+ def get_current_transaction(self, cr, uid, context=None):
+ if request.httprequest.session.get('website_sale_transaction_id'):
+ tx = self._get_transaction(cr, uid, tx_id=request.httprequest.session['website_sale_transaction_id'], context=context)
+ if not tx:
+ request.httprequest.session['website_sale_transaction_id'] = False
+ return tx
+ return False
+
+ def sale_reset_order(self, cr, uid, context=None):
+ request.httprequest.session.update({
+ 'ecommerce_order_id': False,
+ 'ecommerce_pricelist': False,
+ 'website_sale_transaction_id': False,
+ })
+ request.context.update({
+ 'website_sale_order': False,
+ 'website_sale_transaction': False,
+ })
+
+ def preprocess_request(self, cr, uid, ids, request, context=None):
+ request.context.update({
+ 'website_sale_order': self.get_current_order(cr, uid, context=context),
+ 'website_sale_transaction': self.get_current_transaction(cr, uid, context=context)
+ })
+ return super(Website, self).preprocess_request(cr, uid, ids, request, context=None)
+
+ def get_pricelist_id(self, cr, uid, ids, context=None):
+ if not request.httprequest.session.get('ecommerce_pricelist'):
+ self.change_pricelist_id(cr, uid, ids, None, context=context)
+ return request.httprequest.session.get('ecommerce_pricelist')
+
+ def change_pricelist_id(self, cr, uid, ids, code, context=None):
+ request.httprequest.session.setdefault('ecommerce_pricelist', False)
+
+ pricelist_id = False
+ if code:
+ pricelist_obj = self.pool.get('product.pricelist')
+ pricelist_ids = pricelist_obj.search(cr, SUPERUSER_ID, [('code', '=', code)], context=context)
+ if pricelist_ids:
+ pricelist_id = pricelist_ids[0]
+
+ if not pricelist_id:
+ partner_id = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid, context).partner_id.id
+ pricelist_id = self.pool.get('sale.order').onchange_partner_id(cr, SUPERUSER_ID, [], partner_id, context=context)['value']['pricelist_id']
+
+ request.httprequest.session['ecommerce_pricelist'] = pricelist_id
+
+ order = self.get_current_order(cr, uid, context=context)
+ if order:
+ values = {'pricelist_id': pricelist_id}
+ values.update(order.onchange_pricelist_id(pricelist_id, None)['value'])
+ order.write(values)
+ for line in order.order_line:
+ self.add_product_to_cart(order_line_id=line.id, number=0)
|