diff --git a/addons/website_quotation/controllers/main.py b/addons/website_quotation/controllers/main.py index 621678a22c1..63d60c0a988 100644 --- a/addons/website_quotation/controllers/main.py +++ b/addons/website_quotation/controllers/main.py @@ -36,6 +36,10 @@ class sale_quote(http.Controller): # use SUPERUSER_ID allow to access/view order for public user order = request.registry.get('sale.order').browse(request.cr, token and SUPERUSER_ID or request.uid, order_id) if token: assert token == order.access_token, 'Access denied, wrong token!' + if request.uid == self.get_public_user(request.cr, SUPERUSER_ID, request.context): + if request.httprequest.session.get('viewd',False): + self.message_post('Quotation viewed by Customer', order_id, 'comment') + request.httprequest.session['viewd'] = True # TODO: if not order.template_id: return to the URL of the portal view of SO values = { 'quotation': order, @@ -48,6 +52,10 @@ class sale_quote(http.Controller): } return request.website.render('website_quotation.so_quotation', values) + def get_public_user(self, cr, uid, context=None): + res = request.registry.get('ir.model.data').get_object_reference(cr, uid, 'website', 'public_user') + return res and res[1] or False + def _check_option_len(self, order): for option in order.options: if not option.line_id: @@ -79,7 +87,7 @@ class sale_quote(http.Controller): message = post.get('decline_message') request.registry.get('sale.order').write(request.cr, request.uid, [order_id], {'state': 'cancel'}) if message: - self.message_post(message, order_id) + self.message_post(message, order_id, 'comment', 'mail.mt_comment') return werkzeug.utils.redirect("/quote/%s/%s?message=2" % (order_id, token)) @http.route(['/quote///post'], type='http', auth="public", website=True) @@ -90,17 +98,18 @@ class sale_quote(http.Controller): message = post.get('comment') assert token == order.access_token, 'Access denied, wrong token!' if message: - self.message_post(message, order_id) + self.message_post(message, order_id,'comment','mail.mt_comment') request.httprequest.session['new_post'] = True return werkzeug.utils.redirect("/quote/%s/%s?message=1" % (order_id, token)) - def message_post(self , message, order_id, type='comment'): + def message_post(self , message, order_id, type='comment', subtype=False): request.session.body = message cr, uid, context = request.cr, request.uid, request.context if 'body' in request.session and request.session.body: request.registry.get('sale.order').message_post(cr, uid, order_id, body=request.session.body, type=type, + subtype=subtype, context=context, ) request.session.body = False diff --git a/addons/website_quotation/security/ir.model.access.csv b/addons/website_quotation/security/ir.model.access.csv index c4c444c6965..2aeef8bf7c9 100644 --- a/addons/website_quotation/security/ir.model.access.csv +++ b/addons/website_quotation/security/ir.model.access.csv @@ -3,3 +3,4 @@ access_sale_order_portal,sale.order.portal,model_sale_order,base.group_portal,1, access_sale_order_public,sale.order.public,model_sale_order,base.group_public,1,1,1,0 access_sale_order_line_public,sale.order.line.public,model_sale_order_line,base.group_public,1,1,1,0 access_sale_options_line_public,sale.option.line.public,model_sale_option_line,base.group_public,1,1,1,0 +access_mail_message_public,mail.message.public,mail.model_mail_message,base.group_public,1,1,1,0