From 5b05352c9914623b36a32afecb137c98f53f10ac Mon Sep 17 00:00:00 2001 From: William Braeckman Date: Thu, 5 Aug 2021 11:43:19 +0000 Subject: [PATCH] [IMP] mail: add optional mail subtypes This commit adds a way to filter out mail message subtypes for specific records. Task ID: 2585025 closes odoo/odoo#74764 Related: odoo/upgrade#2719 Related: odoo/enterprise#20096 Signed-off-by: Yannick Tivisse (yti) --- addons/mail/controllers/discuss.py | 8 ++++---- addons/mail/models/models.py | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/addons/mail/controllers/discuss.py b/addons/mail/controllers/discuss.py index 7f3b606a416..c9d12ff0978 100644 --- a/addons/mail/controllers/discuss.py +++ b/addons/mail/controllers/discuss.py @@ -49,12 +49,12 @@ class DiscussController(http.Controller): follower = request.env['mail.followers'].sudo().browse(follower_id) follower.ensure_one() request.env[follower.res_model].check_access_rights("read") - request.env[follower.res_model].browse(follower.res_id).check_access_rule("read") + record = request.env[follower.res_model].browse(follower.res_id) + record.check_access_rule("read") # find current model subtypes, add them to a dictionary - subtypes = request.env['mail.message.subtype'].search([ - '&', ('hidden', '=', False), - '|', ('res_model', '=', follower.res_model), ('res_model', '=', False)]) + subtypes = record._mail_get_message_subtypes() + followed_subtypes_ids = set(follower.subtype_ids.ids) subtypes_list = [{ 'name': subtype.name, diff --git a/addons/mail/models/models.py b/addons/mail/models/models.py index c09eefbd10c..2e31ed89bd7 100644 --- a/addons/mail/models/models.py +++ b/addons/mail/models/models.py @@ -198,6 +198,11 @@ class BaseModel(models.AbstractModel): # GATEWAY: NOTIFICATION # ------------------------------------------------------------ + def _mail_get_message_subtypes(self): + return self.env['mail.message.subtype'].search([ + '&', ('hidden', '=', False), + '|', ('res_model', '=', self._name), ('res_model', '=', False)]) + def _notify_email_headers(self): """ Generate the email headers based on record