diff --git a/bemade_time_off_follower/models/mail_thread.py b/bemade_time_off_follower/models/mail_thread.py index d1f5fe0..8186da4 100644 --- a/bemade_time_off_follower/models/mail_thread.py +++ b/bemade_time_off_follower/models/mail_thread.py @@ -3,15 +3,15 @@ import logging _logger = logging.getLogger(__name__) + class MailThread(models.AbstractModel): _inherit = 'mail.thread' - @api.returns('mail.message', lambda value: value.id) - def message_post(self, **kwargs): - message = super(MailThread, self).message_post(**kwargs) + def _notify_compute_recipients(self, message, msg_vals): + recipients = super(MailThread, self)._notify_compute_recipients(message, msg_vals) - for recipient in message.notification_ids.mapped('res_partner_id'): - user = self.env['res.users'].search([('partner_id', '=', recipient.id)], limit=1) + for recipient in recipients: + user = self.env['res.users'].search([('partner_id', '=', recipient['id'])], limit=1) if user: employee = self.env['hr.employee'].search([('user_id', '=', user.id)], limit=1) @@ -24,11 +24,16 @@ class MailThread(models.AbstractModel): ('date_to', '>=', fields.Date.today()), ]) for leave in leaves: - if leave.employee_id.user_id.partner_id.id == recipient.id and leave.alternate_follower_id: - _logger.info(f"adding {leave.alternate_follower_id.partner_id.name} as follower for {recipient.name} while on time off.") - message.write({ - 'notification_ids': [(0, 0, { - 'res_partner_id': leave.alternate_follower_id.partner_id.id, - })] + if leave.employee_id.user_id.partner_id.id == recipient['id'] and leave.alternate_follower_id: + _logger.info( + f"adding {leave.alternate_follower_id.partner_id.name} as follower for {employee.name} while on time off.") + recipients.append({ + 'id': leave.alternate_follower_id.partner_id.id, + 'active': True, + 'share': False, + 'groups': leave.alternate_follower_id.groups_id.ids, + 'notif': 'inbox', + 'type': 'user' }) - return message + + return recipients