From ba74fd0675aa29cb64ffa64df7c7ac2b250cb96f Mon Sep 17 00:00:00 2001 From: Horilla Date: Sat, 20 Jan 2024 12:57:04 +0530 Subject: [PATCH] [UPDT] LEAVE: Leave search method by adding search element by option --- leave/filters.py | 53 ++++++++++++--- .../leave/leave_request/group_by.html | 64 +++++++++++++------ .../leave/leave_request/leave_requests.html | 6 +- .../leave/leave_request/penalty/form.html | 6 +- .../leave/leave_request/request_view.html | 54 +++++++++------- 5 files changed, 127 insertions(+), 56 deletions(-) diff --git a/leave/filters.py b/leave/filters.py index e33320612..567022cba 100644 --- a/leave/filters.py +++ b/leave/filters.py @@ -25,9 +25,6 @@ from .models import ( from base.filters import FilterSet - - - class LeaveTypeFilter(FilterSet): """ Filter class for LeaveType model. @@ -37,8 +34,12 @@ class LeaveTypeFilter(FilterSet): name = filters.CharFilter(field_name="name", lookup_expr="icontains") search = filters.CharFilter(field_name="name", lookup_expr="icontains") - carry_forward_gte = filters.CharFilter(field_name="carryforward_max", lookup_expr="gte") - carry_forward_lte = filters.CharFilter(field_name="carryforward_max", lookup_expr="lte") + carry_forward_gte = filters.CharFilter( + field_name="carryforward_max", lookup_expr="gte" + ) + carry_forward_lte = filters.CharFilter( + field_name="carryforward_max", lookup_expr="lte" + ) total_days_gte = filters.CharFilter(field_name="total_days", lookup_expr="gte") total_days_lte = filters.CharFilter(field_name="total_days", lookup_expr="lte") @@ -117,6 +118,9 @@ class AssignedLeaveFilter(FilterSet): self.form.fields[field].widget.attrs["id"] = f"{uuid.uuid4()}" +from horilla.filters import filter_by_name + + class LeaveRequestFilter(FilterSet): """ Filter class for LeaveRequest model. @@ -126,9 +130,7 @@ class LeaveRequestFilter(FilterSet): overall_leave = django_filters.CharFilter(method="overall_leave_filter") - employee_id = filters.CharFilter( - field_name="employee_id__employee_first_name", lookup_expr="icontains" - ) + search = django_filters.CharFilter(method="filter_by_name") from_date = DateFilter( field_name="start_date", lookup_expr="gte", @@ -214,6 +216,41 @@ class LeaveRequestFilter(FilterSet): queryset = today_leave_requests return queryset + def filter_by_name(self, queryset, name, value): + # Call the imported function + filter_method = { + "leave_type": "leave_type_id__name__icontains", + "status": "status__icontains", + "department": "employee_id__employee_work_info__department_id__department__icontains", + "job_position": "employee_id__employee_work_info__job_position_id__job_position__icontains", + "company": "employee_id__employee_work_info__company_id__company__icontains", + } + search_field = self.data.get("search_field") + if not search_field: + parts = value.split() + first_name = parts[0] + last_name = " ".join(parts[1:]) if len(parts) > 1 else "" + + # Filter the queryset by first name and last name + if first_name and last_name: + queryset = queryset.filter( + employee_id__employee_first_name__icontains=first_name, + employee_id__employee_last_name__icontains=last_name, + ) + elif first_name: + queryset = queryset.filter( + employee_id__employee_first_name__icontains=first_name + ) + elif last_name: + queryset = queryset.filter( + employee_id__employee_last_name__icontains=last_name + ) + else: + filter = filter_method.get(search_field) + queryset = queryset.filter(**{filter: value}) + + return queryset + def __init__(self, data=None, queryset=None, *, request=None, prefix=None): super().__init__(data=data, queryset=queryset, request=request, prefix=prefix) for field in self.form.fields.keys(): diff --git a/leave/templates/leave/leave_request/group_by.html b/leave/templates/leave/leave_request/group_by.html index 34aebd436..ae4a2ee9c 100644 --- a/leave/templates/leave/leave_request/group_by.html +++ b/leave/templates/leave/leave_request/group_by.html @@ -15,13 +15,6 @@ > {% trans "Unselect All Requests" %} - {% comment %} {% endcomment %} @@ -65,8 +58,11 @@
{% trans "Status" %}
{% if not dashboard %}
{% trans "Comment" %}
+
{% trans "Penalties" %}
{% trans "Options" %}
-
{% trans "Actions" %}
+ {% if request.user|is_reportingmanager or perms.leave.chanage_leaverequest or perms.leave.delete_leaverequest or request.user|is_leave_approval_manager %} +
{% trans "Actions" %}
+ {% endif %} {% endif %} @@ -124,6 +120,16 @@ +
+ {% if leave_request.get_penalties_count %} +
+ {% trans "Penalties" %} :{{leave_request.get_penalties_count}} +
+ {% endif %} +
+
{% if leave_request.status == 'requested' or leave_request.status == 'rejected' %} @@ -156,6 +162,18 @@
+ {% if request.user|is_reportingmanager or perms.attendance.chanage_penaltyaccount or request.user|is_leave_approval_manager %} + + {% endif %} @@ -226,23 +244,19 @@ class="oh-modal" id="requestCommentModal" role="dialog" - aria-labelledby="emptagModal" + aria-labelledby="requestCommentModal" aria-hidden="true" > -
- {% comment %}
-

- {% trans "Add Comment" %} -

- -
-
{% endcomment %} -
+
+ +
+ + +