From 3653661235d6ebc62456d54c013772ee4d2fb6cc Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Thu, 1 Dec 2016 14:54:40 +0100 Subject: [PATCH] [FIX] rating, rating_{*}: translations Several translation issues are faced with the rating module: - the feedback page is always displayed in the admin language - the feedback emails are always sent in the user's language One would expect these to be in the partner language. opw-694718 --- addons/rating/controllers/main.py | 8 +++++--- addons/rating/models/rating.py | 4 +++- addons/rating_project/models/project.py | 2 +- addons/rating_project_issue/models/project_issue.py | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/addons/rating/controllers/main.py b/addons/rating/controllers/main.py index 2782ffc3350..48278b735a1 100644 --- a/addons/rating/controllers/main.py +++ b/addons/rating/controllers/main.py @@ -21,8 +21,9 @@ class Rating(http.Controller): 1: _("highly dissatisfied"), 10: _("satisfied") } - rating.sudo().write({'rating': rate, 'consumed': True}) - return request.render('rating.rating_external_page_submit', { + rating.write({'rating': rate, 'consumed': True}) + lang = rating.partner_id.lang or 'en_US' + return request.env['ir.ui.view'].with_context(lang=lang).render_template('rating.rating_external_page_submit', { 'rating': rating, 'token': token, 'rate_name': rate_names[rate], 'rate': rate }) @@ -37,7 +38,8 @@ class Rating(http.Controller): # redirect to the form view if logged person if request.session.uid: return werkzeug.utils.redirect('/web#model=%s&id=%s&view_type=form' % (record_sudo._name, record_sudo.id)) - return request.render('rating.rating_external_page_view', { + lang = rating.partner_id.lang or 'en_US' + return request.env['ir.ui.view'].with_context(lang=lang).render_template('rating.rating_external_page_view', { 'web_base_url': request.env['ir.config_parameter'].sudo().get_param('web.base.url'), 'rating': rating, }) diff --git a/addons/rating/models/rating.py b/addons/rating/models/rating.py index 0ac59c861da..104d5ee34db 100644 --- a/addons/rating/models/rating.py +++ b/addons/rating/models/rating.py @@ -92,8 +92,10 @@ class RatingMixin(models.AbstractModel): def rating_send_request(self, template, partner=None, rated_partner=None, reuse_rating=True, force_send=True): """ This method send rating request by email, using a template given in parameter. """ + partner = (partner or self.env['res.partner']).sudo() for record in self: - template.send_mail(record.id, force_send=force_send) + lang = partner.lang or 'en_US' + template.with_context(lang=lang).send_mail(record.id, force_send=force_send) @api.multi def rating_apply(self, rate, token=None, feedback=None, subtype=None): diff --git a/addons/rating_project/models/project.py b/addons/rating_project/models/project.py index 0ab47987a83..26bcf3d07ec 100644 --- a/addons/rating_project/models/project.py +++ b/addons/rating_project/models/project.py @@ -41,7 +41,7 @@ class Task(models.Model): rating_template = task.stage_id.rating_template_id if rating_template: force_send = self.env.context.get('force_send', True) - task.rating_send_request(rating_template, reuse_rating=False, force_send=force_send) + task.rating_send_request(rating_template, partner=task.partner_id, reuse_rating=False, force_send=force_send) def rating_get_partner_id(self): res = super(Task, self).rating_get_partner_id() diff --git a/addons/rating_project_issue/models/project_issue.py b/addons/rating_project_issue/models/project_issue.py index 047edd6441f..978b50cd3b1 100644 --- a/addons/rating_project_issue/models/project_issue.py +++ b/addons/rating_project_issue/models/project_issue.py @@ -22,7 +22,7 @@ class ProjectIssue(models.Model): for issue in self: rating_template = issue.stage_id.rating_template_id if rating_template: - issue.rating_send_request(rating_template, reuse_rating=False) + issue.rating_send_request(rating_template, partner=issue.partner_id, reuse_rating=False) @api.multi def rating_apply(self, rate, token=None, feedback=None, subtype=None):