From 1e17cd0fc86157fe43493b0f163ec38424df376b Mon Sep 17 00:00:00 2001 From: "ajay javiya (OpenERP)" Date: Mon, 16 Dec 2013 14:19:35 +0530 Subject: [PATCH] [IMP]: code bzr revid: aja@tinyerp.com-20131216084935-frtb88w60l189id1 --- addons/website_sale_quote/controllers/main.py | 21 +++++++++---------- addons/website_sale_quote/models/order.py | 20 +++++++++--------- .../views/website_sale_quote.xml | 2 +- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/addons/website_sale_quote/controllers/main.py b/addons/website_sale_quote/controllers/main.py index fa90883858a..0d6ebb2217f 100644 --- a/addons/website_sale_quote/controllers/main.py +++ b/addons/website_sale_quote/controllers/main.py @@ -41,29 +41,28 @@ class sale_quote(http.Controller): order_pool = request.registry.get('sale.order') user_pool = request.registry.get('res.users') partner = order_pool.browse(request.cr, SUPERUSER_ID, order_id, context=request.context).partner_id.id - return user_pool.search(request.cr, SUPERUSER_ID, [('partner_id', '=', partner)])[0] + if partner: + user = user_pool.search(request.cr, SUPERUSER_ID, [('partner_id', '=', partner)])[0] + return user - @website.route(['/quote/', '/quote/'], type='http', auth="public") - def view(self, token=None, order_id=None, **post): + @website.route(["/quote//"], type='http', auth="public") + def view(self, order=None, token=None,**post): + assert token == order.access_token, 'No token found' values = {} - order_pool = request.registry.get('sale.order') - if token: - order_id = self._get_quote(token)[0] - quotation = order_pool.browse(request.cr, SUPERUSER_ID, order_id) values.update({ - 'quotation': quotation, + 'quotation': order, }) return request.website.render('website_sale_quote.so_quotation', values) @website.route(['/quote//accept'], type='http', auth="public") def accept(self, order_id=None, **post): request.registry.get('sale.order').write(request.cr, SUPERUSER_ID, [order_id], {'state': 'manual'}) - return request.redirect("/quote/%s" % self._get_token(order_id)) + return request.redirect("/quote/%s/%s" % (order_id, self._get_token(order_id))) @website.route(['/quote//decline'], type='http', auth="public") def decline(self, order_id=None, **post): request.registry.get('sale.order').write(request.cr, SUPERUSER_ID, [order_id], {'state': 'cancel'}) - return request.redirect("/quote/%s" % self._get_token(order_id)) + return request.redirect("/quote/%s/%s" % (order_id, self._get_token(order_id))) @website.route(['/quote//post'], type='http', auth="public") def post(self, order_id=None, **post): @@ -76,7 +75,7 @@ class sale_quote(http.Controller): subtype='mt_comment', ) request.session.body = False - return request.redirect("/quote/%s" % self._get_token(order_id)) + return request.redirect("/quote/%s/%s" % (order_id, self._get_token(order_id))) @website.route(['/quote/update_line'], type='json', auth="public") def update(self, line_id=None, remove=False, unlink=False, order_id=None, **post): diff --git a/addons/website_sale_quote/models/order.py b/addons/website_sale_quote/models/order.py index 5334499079e..7afa246776e 100644 --- a/addons/website_sale_quote/models/order.py +++ b/addons/website_sale_quote/models/order.py @@ -87,22 +87,27 @@ class sale_order(osv.osv): 'website_description': fields.html('Description'), } - def _get_token(self, cr, uid, ids, context=None): + def _get_token(self, cr, uid, oder_id, context=None): """ Generate token for sale order on action_quotation_send , send it to customer. """ db_uuid = self.pool.get('ir.config_parameter').get_param(cr, uid, 'database.uuid') - return hashlib.sha256('%s-%s-%s' % (time.time(), db_uuid, ids[0])).hexdigest() + return hashlib.sha256('%s-%s-%s' % (time.time(), db_uuid, oder_id)).hexdigest() + + def _get_signup_url(self, cr, uid, order_id=False, token=False, context=None): + base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://localhost:8069', context=context) + url = "%s/quote/%s/%s" % (base_url, order_id, token) + return url def create(self, cr, uid, vals, context=None): new_id = super(sale_order, self).create(cr, uid, vals, context=context) - self.write(cr, uid, [new_id], {'quote_url': self._get_signup_url(cr, uid, new_id, False, context)}) + token = self._get_token(cr, uid, new_id, context) + url = self._get_signup_url(cr, uid, new_id, token, context) + self.write(cr, uid, [new_id], {'access_token': token,'quote_url': url}) return new_id def action_quotation_send(self, cr, uid, ids, context=None): - token = self._get_token(cr, uid, ids, context) self._create_portal_user(cr, uid, ids, context=context) - self.write(cr, uid, ids, {'access_token': token, 'quote_url': self._get_signup_url(cr, uid, False, token, context)}) res = super(sale_order, self).action_quotation_send(cr, uid, ids, context=context) return res @@ -122,11 +127,6 @@ class sale_order(osv.osv): 'in_portal': True})) return user_wizard_pool.action_apply(cr, uid, user, context=context) - def _get_signup_url(self, cr, uid, order_id=False, token=False, context=None): - base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://localhost:8069', context=context) - url = "%s/quote/%s" % (base_url, token and token or order_id) - return url - def _get_sale_order_line(self, cr, uid, template_id, context=None): """create order line from selected quote template line.""" lines = [] diff --git a/addons/website_sale_quote/views/website_sale_quote.xml b/addons/website_sale_quote/views/website_sale_quote.xml index cd5fd34a2fc..d72c1e1395d 100644 --- a/addons/website_sale_quote/views/website_sale_quote.xml +++ b/addons/website_sale_quote/views/website_sale_quote.xml @@ -165,7 +165,7 @@
  • - +