diff options
| author | Yannick Tivisse <yti@odoo.com> | 2020-05-07 09:40:26 +0000 |
|---|---|---|
| committer | Yannick Tivisse <yti@odoo.com> | 2020-05-08 12:17:20 +0000 |
| commit | 8ca96078dbeb61678f8c0656f90b09ab8a82981a (patch) | |
| tree | 457131a047d674e6b6e38fecd8abc50bce1e47de | |
| parent | e4a4ffb974ccde1842e1b2389450718f8576ad5b (diff) | |
[IMP] rating: Add a retrocompatibily route
Purpose
=======
Even if the routes are correctly updated and the existing data is
correctly updated, the emails that were already sent to the customers
will be problematic, as we will provide a value which is not handled
anymore (10 for example).
To provide a retrocompatibility, deprecated the old route and
introduce a new one.
closes odoo/odoo#46296
Taskid: 2083096
Related: odoo/upgrade#889
Related: odoo/enterprise#10312
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
| -rw-r--r-- | addons/project/data/project_mail_template_data.xml | 6 | ||||
| -rw-r--r-- | addons/rating/controllers/main.py | 27 | ||||
| -rw-r--r-- | addons/rating/views/rating_template.xml | 2 | ||||
| -rw-r--r-- | doc/reference/mixins.rst | 6 |
4 files changed, 32 insertions, 9 deletions
diff --git a/addons/project/data/project_mail_template_data.xml b/addons/project/data/project_mail_template_data.xml index 441be455f31..347d4ae4d9c 100644 --- a/addons/project/data/project_mail_template_data.xml +++ b/addons/project/data/project_mail_template_data.xml @@ -60,17 +60,17 @@ <table style="width:100%;text-align:center;"> <tr> <td> - <a href="/rating/${access_token}/5"> + <a href="/rate/${access_token}/5"> <img alt="Satisfied" src="/rating/static/src/img/rating_5.png" title="Satisfied"/> </a> </td> <td> - <a href="/rating/${access_token}/3"> + <a href="/rate/${access_token}/3"> <img alt="Not satisfied" src="/rating/static/src/img/rating_3.png" title="Not satisfied"/> </a> </td> <td> - <a href="/rating/${access_token}/1"> + <a href="/rate/${access_token}/1"> <img alt="Highly Dissatisfied" src="/rating/static/src/img/rating_1.png" title="Highly Dissatisfied"/> </a> </td> diff --git a/addons/rating/controllers/main.py b/addons/rating/controllers/main.py index e27fc6b7c53..a35f1af8662 100644 --- a/addons/rating/controllers/main.py +++ b/addons/rating/controllers/main.py @@ -1,16 +1,39 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +import logging + from odoo import http from odoo.http import request from odoo.tools.translate import _ from odoo.tools.misc import get_lang +_logger = logging.getLogger(__name__) + +MAPPED_RATES = { + 1: 1, + 5: 3, + 10: 5, +} class Rating(http.Controller): @http.route('/rating/<string:token>/<int:rate>', type='http', auth="public", website=True) def open_rating(self, token, rate, **kwargs): + _logger.warning('/rating is deprecated, use /rate instead') + assert rate in (1, 5, 10), "Incorrect rating" + return self.action_open_rating(token, MAPPED_RATES.get(rate), **kwargs) + + @http.route(['/rating/<string:token>/submit_feedback'], type="http", auth="public", methods=['post'], website=True) + def submit_rating(self, token, **kwargs): + _logger.warning('/rating is deprecated, use /rate instead') + rate = int(kwargs.get('rate')) + assert rate in (1, 5, 10), "Incorrect rating" + kwargs['rate'] = MAPPED_RATES.gate(rate) + return self.action_submit_rating(token, **kwargs) + + @http.route('/rate/<string:token>/<int:rate>', type='http', auth="public", website=True) + def action_open_rating(self, token, rate, **kwargs): assert rate in (1, 3, 5), "Incorrect rating" rating = request.env['rating.rating'].sudo().search([('access_token', '=', token)]) if not rating: @@ -27,8 +50,8 @@ class Rating(http.Controller): '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): + @http.route(['/rate/<string:token>/submit_feedback'], type="http", auth="public", methods=['post'], website=True) + def action_submit_rating(self, token, **kwargs): rate = int(kwargs.get('rate')) assert rate in (1, 3, 5), "Incorrect rating" rating = request.env['rating.rating'].sudo().search([('access_token', '=', token)]) diff --git a/addons/rating/views/rating_template.xml b/addons/rating/views/rating_template.xml index 5b9552e2ffc..9b988b60535 100644 --- a/addons/rating/views/rating_template.xml +++ b/addons/rating/views/rating_template.xml @@ -21,7 +21,7 @@ <div class="card-body"> <div clas="row"> <h1 class="mt-5">Thank you for rating our services!</h1> - <form t-attf-action="/rating/#{token}/submit_feedback" method="post"> + <form t-attf-action="/rate/#{token}/submit_feedback" method="post"> <div class="btn-group btn-group-toggle row" data-toggle="buttons"> <t t-foreach="rate_names" t-as="rate_name"> <label t-attf-class="col-xs-12 btn o_rating_label shadow-none {{rate == rate_name and 'active' or ''}}"> diff --git a/doc/reference/mixins.rst b/doc/reference/mixins.rst index b64387fcc2c..953b604ffa3 100644 --- a/doc/reference/mixins.rst +++ b/doc/reference/mixins.rst @@ -1030,9 +1030,9 @@ links to the rating object. A very basic email template could look like this: <p>Hi,</p> <p>How satsified are you?</p> <ul> - <li><a href="/rating/${access_token}/5">Satisfied</a></li> - <li><a href="/rating/${access_token}/3">Not satisfied</a></li> - <li><a href="/rating/${access_token}/1">Very unsatisfied</a></li> + <li><a href="/rate/${access_token}/5">Satisfied</a></li> + <li><a href="/rate/${access_token}/3">Not satisfied</a></li> + <li><a href="/rate/${access_token}/1">Very unsatisfied</a></li> </ul> ]]></field> </record> |
