Before this commit, when user land after clicking on the smiley in the e-mail for rating, user cannot change its rating. Its click limits the available choice. Now users will be able to choose rating and write feedback before submitting its rating. Task ID 1936849 Closes PR #33979 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com> Co-authored-by: Shreya Thakrar<sht@odoo.com>
44 lines
2.0 KiB
Python
44 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import http
|
|
from odoo.http import request
|
|
from odoo.tools.translate import _
|
|
from odoo.tools.misc import get_lang
|
|
|
|
|
|
class Rating(http.Controller):
|
|
|
|
@http.route('/rating/<string:token>/<int:rate>', type='http', auth="public", website=True)
|
|
def open_rating(self, token, rate, **kwargs):
|
|
assert rate in (1, 5, 10), "Incorrect rating"
|
|
rating = request.env['rating.rating'].sudo().search([('access_token', '=', token)])
|
|
if not rating:
|
|
return request.not_found()
|
|
rate_names = {
|
|
10: _("satisfied"),
|
|
5: _("not satisfied"),
|
|
1: _("highly dissatisfied")
|
|
}
|
|
rating.write({'rating': rate, 'consumed': True})
|
|
lang = rating.partner_id.lang or get_lang(request.env).code
|
|
return request.env['ir.ui.view'].with_context(lang=lang).render_template('rating.rating_external_page_submit', {
|
|
'rating': rating, 'token': token,
|
|
'rate_names': rate_names, 'rate': rate
|
|
})
|
|
|
|
@http.route(['/rating/<string:token>/submit_feedback'], type="http", auth="public", methods=['post'], website=True)
|
|
def submit_rating(self, token, **kwargs):
|
|
rate = kwargs.get('rate')
|
|
assert rate in (1, 5, 10), "Incorrect rating"
|
|
rating = request.env['rating.rating'].sudo().search([('access_token', '=', token)])
|
|
if not rating:
|
|
return request.not_found()
|
|
record_sudo = request.env[rating.res_model].sudo().browse(rating.res_id)
|
|
record_sudo.rating_apply(rate, token=token, feedback=kwargs.get('feedback'))
|
|
lang = rating.partner_id.lang or get_lang(request.env).code
|
|
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,
|
|
})
|