move logic to _notify_compute_recipients not adding replacement as followers

This commit is contained in:
Benoît Vézina 2023-07-21 15:12:18 -04:00
parent 281eb2f13d
commit 0cf3ded6fe

View file

@ -3,15 +3,15 @@ import logging
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
class MailThread(models.AbstractModel): class MailThread(models.AbstractModel):
_inherit = 'mail.thread' _inherit = 'mail.thread'
@api.returns('mail.message', lambda value: value.id) def _notify_compute_recipients(self, message, msg_vals):
def message_post(self, **kwargs): recipients = super(MailThread, self)._notify_compute_recipients(message, msg_vals)
message = super(MailThread, self).message_post(**kwargs)
for recipient in message.notification_ids.mapped('res_partner_id'): for recipient in recipients:
user = self.env['res.users'].search([('partner_id', '=', recipient.id)], limit=1) user = self.env['res.users'].search([('partner_id', '=', recipient['id'])], limit=1)
if user: if user:
employee = self.env['hr.employee'].search([('user_id', '=', user.id)], limit=1) 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()), ('date_to', '>=', fields.Date.today()),
]) ])
for leave in leaves: for leave in leaves:
if leave.employee_id.user_id.partner_id.id == recipient.id and leave.alternate_follower_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 {recipient.name} while on time off.") _logger.info(
message.write({ f"adding {leave.alternate_follower_id.partner_id.name} as follower for {employee.name} while on time off.")
'notification_ids': [(0, 0, { recipients.append({
'res_partner_id': leave.alternate_follower_id.partner_id.id, '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