diff --git a/addons/mass_mailing/controllers/__init__.py b/addons/mass_mailing/controllers/__init__.py index 5d4b25db9c0..c3fbd52feea 100644 --- a/addons/mass_mailing/controllers/__init__.py +++ b/addons/mass_mailing/controllers/__init__.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import legacy from . import main diff --git a/addons/mass_mailing/controllers/legacy.py b/addons/mass_mailing/controllers/legacy.py new file mode 100644 index 00000000000..03392fb84ce --- /dev/null +++ b/addons/mass_mailing/controllers/legacy.py @@ -0,0 +1,15 @@ +# -*- 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.addons.base.models.ir_qweb import keep_query + +class MailingLegacy(http.Controller): + """ Retro compatibility layer for legacy endpoint""" + + @http.route(['/mail/mailing//unsubscribe'], type='http', website=True, auth='public') + def mailing_unsubscribe(self, mailing_id, **post): + return request.redirect( + f'/mailing/{mailing_id}/unsubscribe?{keep_query("*")}' + ) diff --git a/addons/mass_mailing/controllers/main.py b/addons/mass_mailing/controllers/main.py index 73ec95a0c06..b567759b5d8 100644 --- a/addons/mass_mailing/controllers/main.py +++ b/addons/mass_mailing/controllers/main.py @@ -24,7 +24,7 @@ class MassMailController(http.Controller): # SUBSCRIPTION MANAGEMENT # ------------------------------------------------------------ - @http.route(['/mail/mailing//unsubscribe'], type='http', website=True, auth='public') + @http.route(['/mailing//unsubscribe'], type='http', website=True, auth='public') def mailing_unsubscribe(self, mailing_id, email=None, res_id=None, token="", **post): mailing = request.env['mailing.mailing'].sudo().browse(mailing_id) if mailing.exists(): @@ -82,7 +82,7 @@ class MassMailController(http.Controller): }) return request.redirect('/web') - @http.route('/mail/mailing/unsubscribe', type='json', auth='public') + @http.route('/mailing/list/update', type='json', auth='public') def mailing_update_list_subscription(self, mailing_id, opt_in_ids, opt_out_ids, email, res_id, token): mailing = request.env['mailing.mailing'].sudo().browse(mailing_id) if mailing.exists(): diff --git a/addons/mass_mailing/models/mailing.py b/addons/mass_mailing/models/mailing.py index 3f7ca056b12..393743155f4 100644 --- a/addons/mass_mailing/models/mailing.py +++ b/addons/mass_mailing/models/mailing.py @@ -1017,7 +1017,7 @@ class MassMailing(models.Model): def _get_unsubscribe_url(self, email_to, res_id): url = werkzeug.urls.url_join( - self.get_base_url(), 'mail/mailing/%(mailing_id)s/unsubscribe?%(params)s' % { + self.get_base_url(), 'mailing/%(mailing_id)s/unsubscribe?%(params)s' % { 'mailing_id': self.id, 'params': werkzeug.urls.url_encode({ 'res_id': res_id, diff --git a/addons/mass_mailing/static/src/js/mailing_portal.js b/addons/mass_mailing/static/src/js/mailing_portal.js index 867c3a6b569..a0c81af4498 100644 --- a/addons/mass_mailing/static/src/js/mailing_portal.js +++ b/addons/mass_mailing/static/src/js/mailing_portal.js @@ -71,7 +71,7 @@ odoo.define('mass_mailing.unsubscribe', function (require) { unchecked_ids[i] = parseInt($(this).val()); }); - ajax.jsonRpc('/mail/mailing/unsubscribe', 'call', {'opt_in_ids': checked_ids, 'opt_out_ids': unchecked_ids, 'email': email, 'mailing_id': mailing_id, 'res_id': res_id, 'token': token}) + ajax.jsonRpc('/mailing/list/update', 'call', {'opt_in_ids': checked_ids, 'opt_out_ids': unchecked_ids, 'email': email, 'mailing_id': mailing_id, 'res_id': res_id, 'token': token}) .then(function (result) { if (result == 'unauthorized'){ $('#subscription_info').text(_t('You are not authorized to do this!')); diff --git a/addons/mass_mailing/views/mailing_templates_portal_unsubscribe.xml b/addons/mass_mailing/views/mailing_templates_portal_unsubscribe.xml index 992c06d6329..8fa8dd490d6 100644 --- a/addons/mass_mailing/views/mailing_templates_portal_unsubscribe.xml +++ b/addons/mass_mailing/views/mailing_templates_portal_unsubscribe.xml @@ -9,7 +9,7 @@