@@ -38,13 +38,13 @@
{% endif %}
-
{% if perms.offboarding.delete_resignationletter %}
-
diff --git a/offboarding/templates/offboarding/resignation/request_list.html b/offboarding/templates/offboarding/resignation/request_list.html
new file mode 100644
index 000000000..0e9609e63
--- /dev/null
+++ b/offboarding/templates/offboarding/resignation/request_list.html
@@ -0,0 +1,338 @@
+{% load i18n %} {% load yes_no %} {% load static %}
+{% include 'filter_tags.html' %} {% if messages %}
+
+ {% for message in messages %}
+
+ {% endfor %}
+
+{% endif %} {% if letters %}
+
+
+
+
+
+
+
+
+
+
+
+
+ {% trans "Employee" %}
+
+
+ {% trans "Title" %}
+
+
+ {% trans "Planned To Leave" %}
+
+
+ {% trans "Status" %}
+
+
+ {% trans "Description" %}
+
+
+ {% trans "Actions" %}
+
+
+
+ {% for letter in letters %}
+
+
+
+ {{letter.employee_id}}
+
+
{{letter.title}}
+
+ {{letter.planned_to_leave_on}}
+
+
+ {{letter.status}}
+
+
+ {{letter.description|safe|truncatechars:30}}
+
+
+
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+{% else %}
+
+
+
+
{% trans "No search result found!" %}
+
+
+{% endif %}
+
+
diff --git a/offboarding/templates/offboarding/resignation/request_single_view.html b/offboarding/templates/offboarding/resignation/request_single_view.html
new file mode 100644
index 000000000..6508dc0c6
--- /dev/null
+++ b/offboarding/templates/offboarding/resignation/request_single_view.html
@@ -0,0 +1,174 @@
+{% load i18n %}
+{% if request.GET.requests_ids %}
+
+
+
+
+
+
+
+
+
+{% endif %}
+
+
+
+
+ {{ letter.status|capfirst }}
+
+
+
+
+ {% if perms.offboarding.change_resignationletter %}
+
+
+
+ {% endif %}
+
+ {% if perms.offboarding.delete_resignationletter %}
+
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+ {{ letter.employee_id.get_full_name }}
+
+ {{ letter.employee_id.get_department }} /
+ {{letter.employee_id.get_job_position }}
+
+
+
+
+
{{ letter.title }}
+
{{ letter.description|safe }}
+
+
+
diff --git a/offboarding/templates/offboarding/resignation/requests_view.html b/offboarding/templates/offboarding/resignation/requests_view.html
index 577f002f3..ce1e7ec8a 100644
--- a/offboarding/templates/offboarding/resignation/requests_view.html
+++ b/offboarding/templates/offboarding/resignation/requests_view.html
@@ -1,7 +1,7 @@
{% extends "index.html" %}
{% block content %}
{% include "offboarding/resignation/nav.html" %}
- {% include "offboarding/resignation/request_cards.html" %}
+ {% if request.GET.view == 'list' %}
+ {% include "offboarding/resignation/request_list.html" %}
+ {% else %}
+ {% include "offboarding/resignation/request_cards.html" %}
+ {% endif %}
{% endblock content %}
\ No newline at end of file
diff --git a/offboarding/views.py b/offboarding/views.py
index b961a57de..f883c0885 100644
--- a/offboarding/views.py
+++ b/offboarding/views.py
@@ -1,21 +1,24 @@
import datetime
+import json
from urllib.parse import parse_qs
from django.http import HttpResponse, JsonResponse
from django.shortcuts import redirect, render
from django.contrib import messages
from django.contrib.auth.models import User
from base.context_processors import intial_notice_period
+from base.methods import closest_numbers, sortby
from employee.models import Employee
from horilla.decorators import login_required, manager_can_enter, permission_required
from base.views import paginator_qry
from offboarding.decorators import (
any_manager_can_enter,
- check_feature_endabled,
+ check_feature_enabled,
offboarding_manager_can_enter,
offboarding_or_stage_manager_can_enter,
)
from offboarding.filters import (
LetterFilter,
+ LetterReGroup,
PipelineEmployeeFilter,
PipelineFilter,
PipelineStageFilter,
@@ -45,6 +48,7 @@ from django.utils.translation import gettext_lazy as _
from onboarding.filters import OnboardingStageFilter
from payroll.models.models import Contract
+from attendance.methods.group_by import group_by_queryset as group_by
from recruitment.pipeline_grouper import group_by_queryset
@@ -597,7 +601,7 @@ def offboarding_individual_view(request, emp_id):
@login_required
@permission_required("offboarding.view_resignationletter")
-@check_feature_endabled("resignation_request")
+@check_feature_enabled("resignation_request")
def request_view(request):
"""
This method is used to view the resignation request
@@ -614,12 +618,34 @@ def request_view(request):
"f": filter_instance,
"filter_dict": {"status": ["Requested"]},
"offboardings": offboardings,
+ "gp_fields": LetterReGroup.fields,
},
)
@login_required
-@check_feature_endabled("resignation_request")
+@permission_required("offboarding.view_resignationletter")
+def request_single_view(request, id):
+ letter = ResignationLetter.objects.get(id=id)
+ context = {
+ "letter": letter,
+ }
+ requests_ids_json = request.GET.get("requests_ids")
+ if requests_ids_json:
+ requests_ids = json.loads(requests_ids_json)
+ previous_id, next_id = closest_numbers(requests_ids, id)
+ context["requests_ids"] = requests_ids_json
+ context["previous"] = previous_id
+ context["next"] = next_id
+ return render(
+ request,
+ "offboarding/resignation/request_single_view.html",
+ context,
+ )
+
+
+@login_required
+@check_feature_enabled("resignation_request")
def search_resignation_request(request):
"""
This method is used to search/filter the letter
@@ -630,20 +656,50 @@ def search_resignation_request(request):
letters = ResignationLetter.objects.filter(
employee_id__employee_user_id=request.user
)
+ field = request.GET.get("field")
data_dict = parse_qs(request.GET.urlencode())
+ template = "offboarding/resignation/request_cards.html"
+ if request.GET.get("view") == "list":
+ template = "offboarding/resignation/request_list.html"
+
+ if request.GET.get("sortby"):
+ letters = sortby(request, letters, "sortby")
+ data_dict.pop("sortby")
+
+ if field != "" and field is not None:
+ letters = group_by(letters, field, request.GET.get("page"), "page")
+ list_values = [entry["list"] for entry in letters]
+ id_list = []
+ for value in list_values:
+ for instance in value.object_list:
+ id_list.append(instance.id)
+
+ requests_ids = json.dumps(list(id_list))
+ template = "offboarding/resignation/group_by.html"
+
+ else:
+ letters = paginator_qry(letters, request.GET.get("page"))
+ requests_ids = json.dumps([instance.id for instance in letters.object_list])
+
+ if request.GET.get("view"):
+ data_dict.pop("view")
+
+
return render(
request,
- "offboarding/resignation/request_cards.html",
+ template,
{
- "letters": paginator_qry(letters, request.GET.get("page")),
+ "letters": letters,
"filter_dict": data_dict,
"pd": request.GET.urlencode(),
+ "requests_ids": requests_ids,
+ "field": field,
},
)
@login_required
-@check_feature_endabled("resignation_request")
+@check_feature_enabled("resignation_request")
@permission_required("offboarding.delete_resignationletter")
def delete_resignation_request(request):
"""
@@ -656,7 +712,7 @@ def delete_resignation_request(request):
@login_required
-@check_feature_endabled("resignation_request")
+@check_feature_enabled("resignation_request")
def create_resignation_request(request):
"""
This method is used to render form to create resignation requests
@@ -676,7 +732,7 @@ def create_resignation_request(request):
@login_required
-@check_feature_endabled("resignation_request")
+@check_feature_enabled("resignation_request")
@permission_required("offboarding.change_resignationletter")
def update_status(request):
"""