[UPDT] LEAVE: Updated leave models to manage employees without work info

This commit is contained in:
Horilla
2025-10-08 12:33:20 +05:30
parent 8270dd4d84
commit 73f0fca9ad

View File

@@ -674,7 +674,7 @@ class AvailableLeave(HorillaModel):
"""
Return subtitle containing both department and job position information.
"""
return f"{self.employee_id.employee_work_info.department_id} / {self.employee_id.employee_work_info.job_position_id}"
return f"{self.employee_id.get_department()} / {self.employee_id.get_job_position()}"
def forcasted_leaves(self):
forecasted_leave = {}
@@ -1004,20 +1004,20 @@ class LeaveRequest(HorillaModel):
"""
overlapping_requests = LeaveRequest.objects.filter(
Q(
employee_id__employee_work_info__department_id=self.employee_id.employee_work_info.department_id
employee_id__employee_work_info__department_id=self.employee_id.get_department()
)
| Q(
employee_id__employee_work_info__job_position_id=self.employee_id.employee_work_info.job_position_id
employee_id__employee_work_info__job_position_id=self.employee_id.get_job_position()
),
start_date__lte=self.end_date,
end_date__gte=self.start_date,
)
clashed_due_to_department = overlapping_requests.filter(
employee_id__employee_work_info__department_id=self.employee_id.employee_work_info.department_id
employee_id__employee_work_info__department_id=self.employee_id.get_department()
)
clashed_due_to_job_position = overlapping_requests.filter(
employee_id__employee_work_info__job_position_id=self.employee_id.employee_work_info.job_position_id
employee_id__employee_work_info__job_position_id=self.employee_id.get_job_position()
)
return render_template(
@@ -1069,7 +1069,7 @@ class LeaveRequest(HorillaModel):
"""
Return subtitle containing both department and job position information.
"""
return f"{self.employee_id.employee_work_info.department_id} / {self.employee_id.employee_work_info.job_position_id}"
return f"{self.employee_id.get_department()} / {self.employee_id.get_job_position()}"
def my_leave_request_detail_view(self):
"""
@@ -1731,14 +1731,14 @@ class LeaveRequest(HorillaModel):
.filter(
(
Q(
employee_id__employee_work_info__department_id=self.employee_id.employee_work_info.department_id
employee_id__employee_work_info__department_id=self.employee_id.get_department()
)
| Q(
employee_id__employee_work_info__job_position_id=self.employee_id.employee_work_info.job_position_id
employee_id__employee_work_info__job_position_id=self.employee_id.get_job_position()
)
)
& Q(
employee_id__employee_work_info__company_id=self.employee_id.employee_work_info.company_id
employee_id__employee_work_info__company_id=self.employee_id.get_company()
),
start_date__lte=self.end_date,
end_date__gte=self.start_date,
@@ -1779,17 +1779,17 @@ class LeaveAllocationRequest(HorillaModel):
blank=True, null=True, verbose_name=_("Requested days")
)
requested_date = models.DateField(default=timezone.now)
description = models.TextField(max_length=255, verbose_name=_("Description"))
attachment = models.FileField(
null=True,
blank=True,
upload_to=upload_path,
verbose_name=_("Attachment"),
)
description = models.TextField(verbose_name=_("Description"))
status = models.CharField(
max_length=30, choices=LEAVE_ALLOCATION_STATUS, default="requested"
)
reject_reason = models.TextField(blank=True, max_length=255)
reject_reason = models.TextField(blank=True)
history = HorillaAuditLog(
related_name="history_set",
bases=[
@@ -1935,7 +1935,7 @@ class LeaveAllocationRequest(HorillaModel):
"""
Return subtitle containing both department and job position information.
"""
return f"{self.employee_id.employee_work_info.department_id} / {self.employee_id.employee_work_info.job_position_id}"
return f"{self.employee_id.get_department()} / {self.employee_id.get_job_position()}"
def leave_request_allocation_detail_view(self):
"""
@@ -2154,7 +2154,7 @@ if apps.is_installed("attendance"):
"""
Return subtitle containing both department and job position information.
"""
return f"{self.employee_id.employee_work_info.department_id} / {self.employee_id.employee_work_info.job_position_id}"
return f"{self.employee_id.get_department()} / {self.employee_id.get_job_position()}"
def my_compensatory_detail_actions(self):
"""