Files
odoo_source/addons/rating/controllers/main.py
T
Barad MahendraandShreya Thakrar b6af1f368d [IMP] rating: improve rating feedback user interface
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>
2019-11-19 16:29:55 +00:00

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,
})