From 61a33079007b7390c93382c55d66f5aeeca59015 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 30 Jan 2023 17:51:37 +0100 Subject: [PATCH] [FIX] mail_tracking: mixed classes In migration #873 the classes DiscussController and MailController which are the result of an upstream functionality split are merge altogether in this module override causing undesired side effects in other modules trying to extend those (i.e.: portal) TT41432 --- mail_tracking/controllers/__init__.py | 1 + mail_tracking/controllers/discuss.py | 24 ++++++++++++++++++++++++ mail_tracking/controllers/main.py | 21 +-------------------- 3 files changed, 26 insertions(+), 20 deletions(-) create mode 100644 mail_tracking/controllers/discuss.py diff --git a/mail_tracking/controllers/__init__.py b/mail_tracking/controllers/__init__.py index 2a06c0b74..e1674a137 100644 --- a/mail_tracking/controllers/__init__.py +++ b/mail_tracking/controllers/__init__.py @@ -1,3 +1,4 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import main +from . import discuss diff --git a/mail_tracking/controllers/discuss.py b/mail_tracking/controllers/discuss.py new file mode 100644 index 000000000..8a5652d24 --- /dev/null +++ b/mail_tracking/controllers/discuss.py @@ -0,0 +1,24 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import http + +from odoo.addons.mail.controllers.discuss import DiscussController + + +class MailTrackingDiscussController(DiscussController): + @http.route() + def mail_init_messaging(self): + """Route used to initial values of Discuss app""" + values = super().mail_init_messaging() + values.update( + {"failed_counter": http.request.env["mail.message"].get_failed_count()} + ) + return values + + @http.route("/mail/failed/messages", methods=["POST"], type="json", auth="user") + def discuss_failed_messages(self, max_id=None, min_id=None, limit=30, **kwargs): + return http.request.env["mail.message"]._message_fetch( + domain=[("is_failed_message", "=", True)], + max_id=max_id, + min_id=min_id, + limit=limit, + ) diff --git a/mail_tracking/controllers/main.py b/mail_tracking/controllers/main.py index 44af0c0e5..8eb1f6529 100644 --- a/mail_tracking/controllers/main.py +++ b/mail_tracking/controllers/main.py @@ -10,7 +10,6 @@ import werkzeug import odoo from odoo import SUPERUSER_ID, api, http -from odoo.addons.mail.controllers.discuss import DiscussController from odoo.addons.mail.controllers.mail import MailController _logger = logging.getLogger(__name__) @@ -30,7 +29,7 @@ def db_env(dbname): yield api.Environment(cr, SUPERUSER_ID, {}) -class MailTrackingController(MailController, DiscussController): +class MailTrackingController(MailController): def _request_metadata(self): """Prepare remote info metadata""" request = http.request.httprequest @@ -97,21 +96,3 @@ class MailTrackingController(MailController, DiscussController): response.mimetype = "image/gif" response.data = base64.b64decode(BLANK) return response - - @http.route() - def mail_init_messaging(self): - """Route used to initial values of Discuss app""" - values = super().mail_init_messaging() - values.update( - {"failed_counter": http.request.env["mail.message"].get_failed_count()} - ) - return values - - @http.route("/mail/failed/messages", methods=["POST"], type="json", auth="user") - def discuss_failed_messages(self, max_id=None, min_id=None, limit=30, **kwargs): - return http.request.env["mail.message"]._message_fetch( - domain=[("is_failed_message", "=", True)], - max_id=max_id, - min_id=min_id, - limit=limit, - )