Test and validate time off follower

This commit is contained in:
Benoît Vézina 2023-07-18 11:15:46 -04:00
parent bfe54bf9c0
commit 020d8f9d69

View file

@ -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): class MailThread(models.AbstractModel):
_inherit = 'mail.thread' _inherit = 'mail.thread'
@ -7,20 +10,25 @@ class MailThread(models.AbstractModel):
def message_post(self, **kwargs): def message_post(self, **kwargs):
message = super(MailThread, self).message_post(**kwargs) message = super(MailThread, self).message_post(**kwargs)
leave_env = self.env['hr.leave']
for recipient in message.notification_ids.mapped('res_partner_id'): for recipient in message.notification_ids.mapped('res_partner_id'):
leave = leave_env.search([ user = self.env['res.users'].search([('partner_id', '=', recipient.id)], limit=1)
('state', '=', 'validate'), if user:
('date_from', '<=', fields.Date.today()), employee = self.env['hr.employee'].search([('user_id', '=', user.id)], limit=1)
('date_to', '>=', fields.Date.today()),
('employee_id.user_id.partner_id', '=', recipient.id),
], limit=1)
if leave and leave.alternate_follower_id: if employee:
message.write({ employee_id = employee.id
'notification_ids': [(0, 0, { leaves = self.sudo().env['hr.leave'].search([
'res_partner_id': leave.alternate_follower_id.partner_id.id, ('state', '=', 'validate'),
# 'notification_type': 'email', ('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 return message