From f5d378d1e574e6d76af3360e50f9d3eca310a2b3 Mon Sep 17 00:00:00 2001 From: Horilla Date: Tue, 16 Jan 2024 11:35:45 +0530 Subject: [PATCH] [ADD] DASHBOARD: Leave request and leave allocation request approval from dashboard --- base/request_and_approve.py | 54 ++++++++++ .../leave_allocation_approve.html | 75 ++++++++++++++ .../leave_request_approve.html | 53 ++++++++++ base/urls.py | 99 ++++++++++++------- .../leave_allocation_request_single_view.html | 12 +-- .../leave/leave_request/one_request_view.html | 4 +- leave/views.py | 48 ++++++++- templates/dashboard.html | 52 ++++++++++ 8 files changed, 349 insertions(+), 48 deletions(-) create mode 100644 base/templates/request_and_approve/leave_allocation_approve.html create mode 100644 base/templates/request_and_approve/leave_request_approve.html diff --git a/base/request_and_approve.py b/base/request_and_approve.py index d7e805576..a3ee46770 100644 --- a/base/request_and_approve.py +++ b/base/request_and_approve.py @@ -4,6 +4,7 @@ views.py This module is used to map url patterns with request and approve methods in Dashboard. """ +from datetime import date import json from django.shortcuts import render from attendance.models import Attendance, AttendanceValidationCondition @@ -12,6 +13,7 @@ from base.methods import filtersubordinates from base.models import ShiftRequest, WorkTypeRequest from employee.not_in_out_dashboard import paginator_qry from horilla.decorators import login_required +from leave.models import LeaveAllocationRequest, LeaveRequest @login_required @@ -82,3 +84,55 @@ def dashboard_attendance_validate(request): ] ) return render(request, "request_and_approve/attendance_validate.html",{"validate_attendances": validate_attendances,"validate_attendances_ids": validate_attendances_ids, "pd": previous_data,}) + + +@login_required +def leave_request_and_approve(request): + previous_data = request.GET.urlencode() + page_number = request.GET.get("page") + leave_requests = LeaveRequest.objects.filter(status = "requested") + leave_requests = filtersubordinates( + request, leave_requests, "leave.change_leaverequest" + ) + leave_requests = paginator_qry(leave_requests, page_number) + leave_requests_ids = json.dumps( + [ + instance.id for instance in leave_requests + ] + ) + return render( + request, + "request_and_approve/leave_request_approve.html", + { + "leave_requests": leave_requests, + "requests_ids": leave_requests_ids, + "pd": previous_data, + # "current_date":date.today(), + } + ) + + +@login_required +def leave_allocation_approve(request): + previous_data = request.GET.urlencode() + page_number = request.GET.get("page") + allocation_reqests = LeaveAllocationRequest.objects.filter(status = "requested") + allocation_reqests = filtersubordinates( + request, allocation_reqests, "leave.view_leaveallocationrequest" + ) + # allocation_reqests = paginator_qry(allocation_reqests, page_number) + allocation_reqests_ids = json.dumps( + [ + instance.id for instance in allocation_reqests + ] + ) + return render( + request, + "request_and_approve/leave_allocation_approve.html", + { + "allocation_reqests": allocation_reqests, + "reqests_ids": allocation_reqests_ids, + "pd": previous_data, + # "current_date":date.today(), + } + ) diff --git a/base/templates/request_and_approve/leave_allocation_approve.html b/base/templates/request_and_approve/leave_allocation_approve.html new file mode 100644 index 000000000..3bb2bfc7f --- /dev/null +++ b/base/templates/request_and_approve/leave_allocation_approve.html @@ -0,0 +1,75 @@ +{% load i18n %} +{% if allocation_reqests %} +
+
+
+
+
{% trans "Employee" %}
+
{% trans "Leave Type" %}
+
{% trans "Requested Days" %}
+
{% trans "Actions" %}
+
+
+
+ {% for leave_allocation_request in allocation_reqests %} +
+
+
+
+ {% if leave_allocation_request.employee_id.employee_profile %} + + {% else %} + + {% endif %} +
+ {{leave_allocation_request.employee_id}} +
+
+
{{leave_allocation_request.leave_type_id}}
+
{{leave_allocation_request.requested_days}}
+
+
+ {% if leave_allocation_request.status == 'requested' %} + + + + {% endif %} + {% if leave_allocation_request.status == 'requested' or leave_allocation_request.status == 'approved' %} + + + + {% else %} + + + + {% endif %} +
+
+
+ {% endfor %} +
+
+
+{% else %} +
+
+ +

{% trans "No data Found..." %}

+
+
+{% endif %} \ No newline at end of file diff --git a/base/templates/request_and_approve/leave_request_approve.html b/base/templates/request_and_approve/leave_request_approve.html new file mode 100644 index 000000000..1d67c31d1 --- /dev/null +++ b/base/templates/request_and_approve/leave_request_approve.html @@ -0,0 +1,53 @@ +{% load i18n %} +{% if leave_requests %} +
+
+
+
+
{% trans "Employee" %}
+
{% trans "Start Date" %}
+
{% trans "End Date" %}
+
{% trans "Actions" %}
+
+
+
+ {% for leave_request in leave_requests %} +
+
+
+
+ +
+ {{leave_request.employee_id}} +
+
+
{{leave_request.start_date}}
+
{{leave_request.end_date}}
+
+ +
+
+ {% endfor %} +
+
+
+{% else %} +
+
+ +

{% trans "No data Found..." %}

+
+
+{% endif %} \ No newline at end of file diff --git a/base/urls.py b/base/urls.py index 4879b969c..19d10ffd5 100644 --- a/base/urls.py +++ b/base/urls.py @@ -1,5 +1,6 @@ from django.urls import path from base import request_and_approve, views +from base.forms import RotatingShiftAssignForm, RotatingWorkTypeAssignForm, RotatingWorkTypeForm from base.models import ( Company, Department, @@ -9,7 +10,9 @@ from base.models import ( JobPosition, JobRole, RotatingShift, + RotatingShiftAssign, RotatingWorkType, + RotatingWorkTypeAssign, WorkType, ) from django.contrib.auth.models import Group @@ -83,7 +86,7 @@ urlpatterns = [ views.mail_server_create_or_update, name="mail-server-create-update", ), - path("mail-server-delete",views.mail_server_delete,name="mail-server-delete"), + path("mail-server-delete", views.mail_server_delete, name="mail-server-delete"), path("settings/company-create/", views.company_create, name="company-create"), path("settings/company-view/", views.company_view, name="company-view"), path( @@ -216,6 +219,16 @@ urlpatterns = [ views.rotating_work_type_assign_update, name="rotating-work-type-assign-update", ), + path( + "rotating-work-type-assign-duplicate//", + views.object_duplicate, + name="rotating-work-type-assign-duplicate", + kwargs={ + "model": RotatingWorkTypeAssign, + "form": RotatingWorkTypeAssignForm, + "template": "base/rotating_work_type/htmx/rotating_work_type_assign_form.html", + }, + ), path( "rotating-work-type-assign-archive//", views.rotating_work_type_assign_archive, @@ -361,6 +374,16 @@ urlpatterns = [ views.rotating_shift_assign_update, name="rotating-shift-assign-update", ), + path( + "rotating-shift-assign-duplicate//", + views.object_duplicate, + name="rotating-shift-assign-duplicate", + kwargs={ + "model": RotatingShiftAssign, + "form": RotatingShiftAssignForm, + "template": "base/rotating_shift/htmx/rotating_shift_assign_form.html", + }, + ), path( "rotating-shift-assign-archive//", views.rotating_shift_assign_archive, @@ -559,47 +582,39 @@ urlpatterns = [ views.rotating_work_type_select_filter, name="r-work-type-select-filter", ), + path("settings/ticket-type-view/", views.ticket_type_view, name="ticket-type-view"), + path("ticket-type-create", views.ticket_type_create, name="ticket-type-create"), path( - "settings/ticket-type-view/",views.ticket_type_view,name="ticket-type-view" + "ticket-type-update/", + views.ticket_type_update, + name="ticket-type-update", ), path( - "ticket-type-create",views.ticket_type_create,name="ticket-type-create" + "ticket-type-delete/", + views.ticket_type_delete, + name="ticket-type-delete", + ), + path("settings/tag-view/", views.tag_view, name="tag-view"), + path("tag-create", views.tag_create, name="tag-create"), + path("tag-update/", views.tag_update, name="tag-update"), + path("tag-delete/", views.tag_delete, name="tag-delete"), + path("employee-tag-create", views.employee_tag_create, name="employee-tag-create"), + path( + "employee-tag-update/", + views.employee_tag_update, + name="employee-tag-update", ), path( - "ticket-type-update/",views.ticket_type_update,name="ticket-type-update" + "employee-tag-delete/", + views.employee_tag_delete, + name="employee-tag-delete", + ), + path("audit-tag-create", views.audit_tag_create, name="audit-tag-create"), + path( + "audit-tag-update/", views.audit_tag_update, name="audit-tag-update" ), path( - "ticket-type-delete/",views.ticket_type_delete,name="ticket-type-delete" - ), - path( - "settings/tag-view/",views.tag_view,name="tag-view" - ), - path( - "tag-create",views.tag_create,name="tag-create" - ), - path( - "tag-update/",views.tag_update,name="tag-update" - ), - path( - "tag-delete/",views.tag_delete,name="tag-delete" - ), - path( - "employee-tag-create",views.employee_tag_create,name="employee-tag-create" - ), - path( - "employee-tag-update/",views.employee_tag_update,name="employee-tag-update" - ), - path( - "employee-tag-delete/",views.employee_tag_delete,name="employee-tag-delete" - ), - path( - "audit-tag-create",views.audit_tag_create,name="audit-tag-create" - ), - path( - "audit-tag-update/",views.audit_tag_update,name="audit-tag-update" - ), - path( - "audit-tag-delete/",views.audit_tag_delete,name="audit-tag-delete" + "audit-tag-delete/", views.audit_tag_delete, name="audit-tag-delete" ), path( "configuration/multiple-approval-condition", @@ -636,7 +651,7 @@ urlpatterns = [ views.delete_shiftrequest_comment, name="shift-request-delete-comment", ), - path( + path( "worktype-request-add-comment//", views.create_worktyperequest_comment, name="worktype-request-add-comment", @@ -671,6 +686,14 @@ urlpatterns = [ request_and_approve.dashboard_attendance_validate, name="dashboard-attendance-validate", ), - - + path( + "leave-request-and-approve", + request_and_approve.leave_request_and_approve, + name="leave-request-and-approve", + ), + path( + "leave-allocation-approve", + request_and_approve.leave_allocation_approve, + name="leave-allocation-approve", + ), ] diff --git a/leave/templates/leave/leave_allocation_request/leave_allocation_request_single_view.html b/leave/templates/leave/leave_allocation_request/leave_allocation_request_single_view.html index 8dc863252..a41fe6165 100644 --- a/leave/templates/leave/leave_allocation_request/leave_allocation_request_single_view.html +++ b/leave/templates/leave/leave_allocation_request/leave_allocation_request_single_view.html @@ -3,15 +3,15 @@ {% if instances_ids %}
{% endif %} + {% if perms.attendance.change_leaverequest or request.user|is_reportingmanager %} +
+
+
+ {% trans "Leave request Approve" %} +
+
+
+
+
+ {% endif %} + {% if perms.attendance.change_leaveallocationrequest or request.user|is_reportingmanager %} +
+
+
+ {% trans "Leave Allocation Request Approve" %} +
+
+ {% include "request_and_approve/leave_request_approve.html" %} +
+
+
+ {% endif %} @@ -662,6 +711,9 @@ class="oh-modal__dialog-body oh-modal__dialog-relative" id="smallModalTarget" > + {% comment %}
+ +
{% endcomment %}