af5ff650ab272d0b12ab43cbbd7e6e07f9c2a9e9
[odoo/odoo.git] / addons / website_sale / models / sale_order.py
1 # -*- coding: utf-8 -*-
2 from openerp import SUPERUSER_ID
3 from openerp.osv import osv, fields
4 from openerp.addons.web.http import request
5
6
7 class SaleOrder(osv.Model):
8     _inherit = "sale.order"
9
10     _columns = {
11         'website_session_id': fields.char('Session UUID4'),
12         'website_order_line': fields.one2many(
13             'sale.order.line', 'order_id',
14             string='Order Lines displayed on Website', readonly=True,
15             help='Order Lines to be displayed on the website. They should not be used for computation purpose.',
16         ),
17     }
18
19     def _get_errors(self, cr, uid, order, context=None):
20         return []
21
22     def _get_website_data(self, cr, uid, order, context):
23         return {
24             'partner': order.partner_id.id,
25             'order': order
26         }
27
28     def get_number_of_products(self, cr, uid, ids, context=None):
29         order = self.browse(cr, uid, ids[0], context=context)
30         return int(sum(l.product_uom_qty for l in (order.website_order_line or [])))
31
32
33 class SaleOrderLine(osv.Model):
34     _inherit = "sale.order.line"
35
36     def _recalculate_product_values(self, cr, uid, ids, product_id=0, context=None):
37         # TDE FIXME: seems to be defined several times -> fix me ?
38         if context is None:
39             context = {}
40         user_obj = self.pool.get('res.users')
41
42         if ids and not product_id:
43             order_line = self.browse(cr, SUPERUSER_ID, ids[0], context=context)
44             assert order_line.order_id.website_session_id == request.httprequest.session['website_session_id']
45             product_id = product_id or order_line.product_id.id
46
47         return self.product_id_change(
48             cr, SUPERUSER_ID, ids,
49             pricelist=context.pop('pricelist'),
50             product=product_id,
51             partner_id=user_obj.browse(cr, SUPERUSER_ID, uid).partner_id.id,
52             context=context
53         )['value']