diff --git a/bemade_time_off_follower/models/mail_thread.py b/bemade_time_off_follower/models/mail_thread.py index 661961a..d1f5fe0 100644 --- a/bemade_time_off_follower/models/mail_thread.py +++ b/bemade_time_off_follower/models/mail_thread.py @@ -1,4 +1,7 @@ -from odoo import models, api +from odoo import models, api, fields +import logging + +_logger = logging.getLogger(__name__) class MailThread(models.AbstractModel): _inherit = 'mail.thread' @@ -7,20 +10,25 @@ class MailThread(models.AbstractModel): def message_post(self, **kwargs): message = super(MailThread, self).message_post(**kwargs) - leave_env = self.env['hr.leave'] for recipient in message.notification_ids.mapped('res_partner_id'): - leave = leave_env.search([ - ('state', '=', 'validate'), - ('date_from', '<=', fields.Date.today()), - ('date_to', '>=', fields.Date.today()), - ('employee_id.user_id.partner_id', '=', recipient.id), - ], limit=1) - - if leave and leave.alternate_follower_id: - message.write({ - 'notification_ids': [(0, 0, { - 'res_partner_id': leave.alternate_follower_id.partner_id.id, - # 'notification_type': 'email', - })] - }) + 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) + + if employee: + employee_id = employee.id + leaves = self.sudo().env['hr.leave'].search([ + ('state', '=', 'validate'), + ('date_from', '<=', fields.Date.today()), + ('employee_id', '=', employee_id), + ('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, + })] + }) return message