Skip to content
Permalink

Comparing changes

This is a direct comparison between two commits made in this repository or its related repositories. View the default comparison for this range or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: OCA/hr-holidays
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 716b4464d2c3994bf8e113c933d307ea110b1248
Choose a base ref
..
head repository: OCA/hr-holidays
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 6aafef4cdf0e3c70e2f7d1e45137f5ce3dd6225f
Choose a head ref
6 changes: 5 additions & 1 deletion hr_holidays_security/models/hr_leave.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
# Copyright 2024 Tecnativa - David Vidal
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _, models
from odoo import _, fields, models
from odoo.exceptions import UserError


class HrLeave(models.Model):
_inherit = "hr.leave"

# Used in the view so we can set different group settings. Otherwise only one will
# prevail with unexpected behavior
employee_id_related = fields.Many2one(related="employee_id", readonly=False)

def _check_approval_update(self, state):
"""Check if target state is achievable"""
if (
3 changes: 3 additions & 0 deletions hr_holidays_security/models/hr_leave_allocation.py
Original file line number Diff line number Diff line change
@@ -10,6 +10,9 @@ class HrLeaveAllocation(models.Model):
allowed_holyday_status_ids = fields.Many2many(
comodel_name="hr.leave.type", compute="_compute_allowed_holyday_status_ids"
)
# Used in the view so we can set different group settings. Otherwise only one will
# prevail with unexpected behavior
employee_id_related = fields.Many2one(related="employee_id", readonly=False)

def _get_allowed_holyday_status_domain(self):
if self.user_has_groups("hr_holidays.group_hr_holidays_user") or (
9 changes: 7 additions & 2 deletions hr_holidays_security/tests/test_hr_holidays_security.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Copyright 2024 Tecnativa - David Vidal
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo.tests import SavepointCase
from odoo.tests import Form, SavepointCase

from odoo.addons.mail.tests.common import mail_new_test_user

@@ -40,6 +40,11 @@ def create_user_and_employee(self, login, groups):
)
return user

def new_leave(self, user):
return Form(self.env["hr.leave"].with_user(user.id))

def test_leave_approvals(self):
"""Different users workflows"""
# self.env["hr.leave"].search([])
leave_request = self.new_leave(self.r1_team_member_a)
leave_request.employee_id = self.r2_team_member_b.employee_id
leave_request.save()
2 changes: 1 addition & 1 deletion hr_holidays_security/views/hr_leave_allocation_views.xml
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@
<field name="arch" type="xml">
<field name="employee_id" position="after">
<field
name="employee_id"
name="employee_id_related"
groups="hr_holidays.group_hr_holidays_responsible,!hr_holidays.group_hr_holidays_user"
attrs="{'required': [('holiday_type', '=', 'employee')], 'invisible': [('holiday_type', '!=', 'employee')]}"
domain="['|', ('leave_manager_id', '=', uid), ('user_id', '=', uid)]"
2 changes: 1 addition & 1 deletion hr_holidays_security/views/hr_leave_views.xml
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@
</field>
<field name="employee_id" position="after">
<field
name="employee_id"
name="employee_id_related"
groups="hr_holidays.group_hr_holidays_responsible,!hr_holidays.group_hr_holidays_user"
attrs="{'required': [('holiday_type', '=', 'employee')], 'invisible': [('holiday_type', '!=', 'employee')]}"
domain="['|', ('leave_manager_id', '=', uid), ('user_id', '=', uid)]"