diff --git a/addons/hr_holidays/security/hr_holidays_security.xml b/addons/hr_holidays/security/hr_holidays_security.xml
index 3e10c16ca65..fb49f9a0ef6 100644
--- a/addons/hr_holidays/security/hr_holidays_security.xml
+++ b/addons/hr_holidays/security/hr_holidays_security.xml
@@ -129,6 +129,16 @@
+
+ Allocations: Team Leader: read employee's allocations in his team
+
+ [('employee_id.leave_manager_id', '=' , user.id)]
+
+
+
+
+
+
Leaves Resources: Team Leader
diff --git a/addons/hr_holidays/tests/common.py b/addons/hr_holidays/tests/common.py
index 0f9c6f1cc89..510c6883b41 100644
--- a/addons/hr_holidays/tests/common.py
+++ b/addons/hr_holidays/tests/common.py
@@ -23,6 +23,9 @@ class TestHrHolidaysBase(common.TransactionCase):
self.user_hrmanager_2 = mail_new_test_user(self.env, login='florence', groups='base.group_user,hr_holidays.group_hr_holidays_manager')
self.user_hrmanager_2_id = self.user_hrmanager_2.id
+ self.user_team_leader = mail_new_test_user(self.env, login='arthur', groups='base.group_user,hr_holidays.group_hr_holidays_team_leader')
+ self.user_team_leader_id = self.user_team_leader.id
+
# Hr Data
Department = self.env['hr.department'].with_context(tracking_disable=True)
diff --git a/addons/hr_holidays/tests/test_access_rights.py b/addons/hr_holidays/tests/test_access_rights.py
index ca651a69010..00ac2856d20 100644
--- a/addons/hr_holidays/tests/test_access_rights.py
+++ b/addons/hr_holidays/tests/test_access_rights.py
@@ -362,6 +362,37 @@ class TestLeavesRights(TestHrHolidaysBase):
self.employee_leave.sudo(self.user_hruser).action_approve()
self.employee_leave.sudo(self.user_hrmanager_id).action_validate()
+ # ----------------------------------------
+ # Validation: team leader
+ # ----------------------------------------
+
+ @mute_logger('odoo.models.unlink', 'odoo.addons.mail.models.mail_mail')
+ def test_leave_validation_team_leader_other(self):
+ """ Team Leader validates its employee's leave only"""
+ self.leave_type.write({'allocation_type': 'fixed'})
+ self.env['hr.leave.allocation'].create({
+ 'holiday_status_id': self.leave_type.id,
+ 'employee_id': self.employee_emp.id,
+ 'number_of_days': 10,
+ }).action_approve()
+ with self.assertRaises(AccessError):
+ self.employee_leave.sudo(self.user_team_leader).action_approve()
+
+ @mute_logger('odoo.models.unlink', 'odoo.addons.mail.models.mail_mail')
+ def test_leave_validation_team_leader(self):
+ """ Team Leader validates its employee's leave"""
+ self.leave_type.write({'allocation_type': 'fixed'})
+
+ # set the team leader
+ self.employee_emp.leave_manager_id = self.user_team_leader
+
+ self.env['hr.leave.allocation'].create({
+ 'holiday_status_id': self.leave_type.id,
+ 'employee_id': self.employee_emp.id,
+ 'number_of_days': 10,
+ }).action_approve()
+ self.employee_leave.sudo(self.user_team_leader).action_approve()
+
class TestMultiCompany(TestHrHolidaysBase):