odoo/ext/custom-addons/mail_unsubscribe/models/mail_thread.py

26 lines
1.3 KiB
Python

from odoo import _, api, fields, models
import logging
_logger = logging.getLogger(__name__)
import ast
class MailThread(models.AbstractModel):
_inherit = 'mail.thread'
def _unsubscribe_followers(self):
ignore_current_partner = ast.literal_eval(self.env['ir.config_parameter'].sudo().get_param('mail_unsubscribe.ignore_current_partner', 'False'))
for mt in self:
current_partner_id = self.env.user.partner_id
message_partner_ids = mt.message_partner_ids
if ignore_current_partner:
message_partner_ids = message_partner_ids.filtered(lambda p: p != current_partner_id)
mt.message_unsubscribe(message_partner_ids.ids)
@api.returns('mail.message', lambda value: value.id)
def message_post(self, **kwargs):
self._unsubscribe_followers()
mail_post_autofollow = ast.literal_eval(self.env['ir.config_parameter'].sudo().get_param('mail_unsubscribe.mail_post_autofollow', 'False'))
mail_create_nosubscribe = ast.literal_eval(self.env['ir.config_parameter'].sudo().get_param('mail_unsubscribe.mail_create_nosubscribe', 'True'))
res = super(MailThread, self.with_context(mail_post_autofollow=mail_post_autofollow, mail_create_nosubscribe=mail_create_nosubscribe)).message_post(**kwargs)
return res