From 6dca1ab8203d3b383b1f8a0d76075f2e23cdebf7 Mon Sep 17 00:00:00 2001 From: Horilla Date: Thu, 15 Feb 2024 12:40:50 +0530 Subject: [PATCH] [FIX] RECRUITMENT: Fixed recruitment view showing archived recruitments --- recruitment/filters.py | 8 +++++ recruitment/forms.py | 1 + recruitment/templates/recruitment/nav.html | 2 +- .../recruitment/recruitment_component.html | 7 ++++ recruitment/urls.py | 1 + recruitment/views/search.py | 12 +++++++ recruitment/views/views.py | 33 +++++++++++++++++++ 7 files changed, 63 insertions(+), 1 deletion(-) diff --git a/recruitment/filters.py b/recruitment/filters.py index 4089579c4..75d14fbed 100644 --- a/recruitment/filters.py +++ b/recruitment/filters.py @@ -186,6 +186,14 @@ class RecruitmentFilter(FilterSet): initial="no", empty_label="No", ) + is_active = django_filters.ChoiceFilter( + choices=[ + (True, "Yes"), + (False, "No"), + ], + initial="Yes", + empty_label="Yes", + ) class Meta: """ diff --git a/recruitment/forms.py b/recruitment/forms.py index ce332d9f0..6c83683a2 100644 --- a/recruitment/forms.py +++ b/recruitment/forms.py @@ -232,6 +232,7 @@ class RecruitmentCreationForm(ModelForm): model = Recruitment fields = "__all__" + exclude = ["is_active"] widgets = { "start_date": forms.DateInput(attrs={"type": "date"}), "end_date": forms.DateInput(attrs={"type": "date"}), diff --git a/recruitment/templates/recruitment/nav.html b/recruitment/templates/recruitment/nav.html index 88c527b42..480cc065b 100644 --- a/recruitment/templates/recruitment/nav.html +++ b/recruitment/templates/recruitment/nav.html @@ -41,7 +41,7 @@ x-data="{searchShow: false}"
-
{% endif %} + {% if perms.recruitment.delete_recruitment %} + {% if rec.is_active %} + + {% else %} + + {% endif %} + {% endif %} {% if perms.recruitment.delete_recruitment %}
", views.recruitment_archive, name="recruitment-archive"), path( "pipeline-search-candidate", recruitment.views.search.pipeline_candidate_search, diff --git a/recruitment/views/search.py b/recruitment/views/search.py index 72ef2f51c..a4ae1ac0c 100644 --- a/recruitment/views/search.py +++ b/recruitment/views/search.py @@ -34,6 +34,18 @@ def recruitment_search(request): previous_data = request.GET.urlencode() recruitment_obj = sortby(request, filter_obj.qs, "orderby") data_dict = parse_qs(previous_data) + if not request.GET.get("is_active"): + filter_obj.form.initial["is_active"] = True + data_dict["is_active"] = request.GET.get("is_active") + recruitment_obj = recruitment_obj.filter(is_active=True) + + for key, val in data_dict.copy().items(): + try: + if val[0] != "False" or key == "view": + del data_dict[key] + except: + del data_dict[key] + get_key_instances(Recruitment, data_dict) return render( diff --git a/recruitment/views/views.py b/recruitment/views/views.py index c24193f73..2195bfcdc 100644 --- a/recruitment/views/views.py +++ b/recruitment/views/views.py @@ -194,7 +194,21 @@ def recruitment_view(request): template = "recruitment/recruitment_view.html" else: template = "recruitment/recruitment_empty.html" + filter_obj = RecruitmentFilter(request.GET, queryset) + + filter_dict = parse_qs(request.GET.urlencode()) + if not request.GET.get("is_active"): + print("]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]") + filter_obj.form.initial["is_active"] = True + filter_dict["is_active"] = ["true"] + for key, val in filter_dict.copy().items(): + try: + if val[0] != "false" or key == "view": + del filter_dict[key] + except: + del filter_dict[key] + return render( request, template, @@ -202,6 +216,7 @@ def recruitment_view(request): "data": paginator_qry(filter_obj.qs, request.GET.get("page")), "f": filter_obj, "form": form, + "filter_dict":filter_dict, }, ) @@ -434,6 +449,24 @@ def recruitment_pipeline_card(request): {"recruitment": recruitment_obj, "candidates": candidates, "stages": stages}, ) +@login_required +@permission_required(perm="recruitment.delete_recruitment") +def recruitment_archive(request,rec_id): + """ + This method is used to archive and unarchive the recruitment + args: + rec_id: The id of the Recruitment + """ + + recruitment = Recruitment.objects.get(id=rec_id) + if recruitment.is_active: + recruitment.is_active = False + else: + recruitment.is_active = True + recruitment.save() + + return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) + @login_required @recruitment_manager_can_enter(perm="recruitment.change_stage")