Test and validate time off follower
This commit is contained in:
parent
bfe54bf9c0
commit
020d8f9d69
1 changed files with 24 additions and 16 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue