diff --git a/onboarding/urls.py b/onboarding/urls.py index 2c059c24e..ed505d9d4 100644 --- a/onboarding/urls.py +++ b/onboarding/urls.py @@ -5,6 +5,7 @@ This module is used to map url path with view methods. """ from django.urls import path from onboarding import views +from recruitment.models import Candidate urlpatterns = [ path("stage-creation/", views.stage_creation, name="stage-creation"), @@ -22,14 +23,27 @@ urlpatterns = [ name="task-update", ), path("candidate-creation", views.candidate_creation, name="candidate-creation"), - path("candidate-update/", views.candidate_update, name="candidate-update"), - path("candidate-delete/", views.candidate_delete, name="candidate-delete"), - path("candidate-single-view/", views.candidates_single_view, name="candidate-single-view"), - path("candidates-view", views.candidates_view, name="candidates-view"), - path("hired-candidates-view", views.hired_candidate_view, name="hired-candidates-view"), + path( + "candidate-update/", views.candidate_update, name="candidate-update" + ), + path( + "candidate-delete/", views.candidate_delete, name="candidate-delete" + ), + path( + "candidate-single-view/", + views.candidates_single_view, + name="candidate-single-view", + kwargs={"model": Candidate}, + ), + path("candidates-view/", views.candidates_view, name="candidates-view"), + path( + "hired-candidates-view", + views.hired_candidate_view, + name="hired-candidates-view", + ), path("candidate-filter", views.candidate_filter, name="candidate-filter"), path("email-send", views.email_send, name="email-send"), - path("onboarding-view", views.onboarding_view, name="onboarding-view"), + path("onboarding-view/", views.onboarding_view, name="onboarding-view"), path("kanban-view", views.kanban_view, name="kanban-view"), path( "candidate-task-update/", @@ -41,9 +55,16 @@ urlpatterns = [ views.candidate_stage_update, name="candidate-stage-update", ), - path("candidate-stage-bulk-update", views.candidate_stage_bulk_update, name="candidate-stage-bulk-update"), - path("candidate-task-bulk-update", views.candidate_task_bulk_update, name="candidate-task-bulk-update"), - + path( + "candidate-stage-bulk-update", + views.candidate_stage_bulk_update, + name="candidate-stage-bulk-update", + ), + path( + "candidate-task-bulk-update", + views.candidate_task_bulk_update, + name="candidate-task-bulk-update", + ), path( "stage-name-update//", views.stage_name_update, @@ -72,9 +93,13 @@ urlpatterns = [ views.onboard_candidate_chart, name="onboard-candidate-chart", ), - path("update-joining",views.update_joining,name="update-joining"), - path("view-onboarding-dashboard",views.view_dashboard,name="view-onboarding-dashboard"), - path("stage-chart",views.dashboard_stage_chart,name="stage-chart"), + path("update-joining", views.update_joining, name="update-joining"), + path( + "view-onboarding-dashboard", + views.view_dashboard, + name="view-onboarding-dashboard", + ), + path("stage-chart", views.dashboard_stage_chart, name="stage-chart"), path( "candidate-sequence-update", views.candidate_sequence_update, @@ -85,6 +110,9 @@ urlpatterns = [ views.stage_sequence_update, name="onboarding-stage-sequence-update", ), - path('send-mail//',views.onboarding_send_mail,name = "onboarding-send-mail"), - + path( + "send-mail//", + views.onboarding_send_mail, + name="onboarding-send-mail", + ), ] diff --git a/onboarding/views.py b/onboarding/views.py index fb1620ed3..ed368a99b 100644 --- a/onboarding/views.py +++ b/onboarding/views.py @@ -402,11 +402,12 @@ def candidate_delete(request, obj_id): ) return redirect(candidates_view) + @login_required @permission_required("recruitment.view_candidate") -def candidates_single_view(request,id): +def candidates_single_view(request, id, **kwargs): """ - Canidate individual view for the onboarded candidates + Candidate individual view for the onboarding candidates """ candidate = Candidate.objects.get(id=id) if not CandidateStage.objects.filter(candidate_id=candidate).exists(): @@ -434,13 +435,13 @@ def candidates_single_view(request,id): candidate_id=candidate, onboarding_task_id=task ).save() - recruitment =candidate.recruitment_id + recruitment = candidate.recruitment_id choices = CandidateTask.choice context = { - "recruitment": recruitment, - "choices": choices, - "candidate": candidate, - } + "recruitment": recruitment, + "choices": choices, + "candidate": candidate, + } return render( request, "onboarding/single_view.html", @@ -543,12 +544,12 @@ def email_send(request): if request.method != "POST": return JsonResponse("", safe=False) candidates = request.POST.get("candidates") - json_mylist = json.loads(candidates) - if len(json_mylist) <= 0: + json_list = json.loads(candidates) + if len(json_list) <= 0: return JsonResponse( {"message": _("No candidate has chosen."), "tags": "danger"} ) - for cand_id in json_mylist: + for cand_id in json_list: candidate = Candidate.objects.get(id=cand_id) if candidate.start_onboard is False: token = secrets.token_hex(15) @@ -1035,8 +1036,10 @@ def candidate_stage_bulk_update(request): recruitment = Recruitment.objects.get(id=int(recrutment_id)) choices = CandidateTask.choice - count = CandidateStage.objects.filter(candidate_id__id__in=candidate_id_list).update(onboarding_stage_id = stage) - + count = CandidateStage.objects.filter( + candidate_id__id__in=candidate_id_list + ).update(onboarding_stage_id=stage) + response = render( request, "onboarding/onboarding_table.html", @@ -1048,7 +1051,8 @@ def candidate_stage_bulk_update(request): ) return HttpResponse( - response.content.decode("utf-8") + '
candidate stage updated successfully
' + response.content.decode("utf-8") + + '
candidate stage updated successfully
' ) @@ -1061,7 +1065,9 @@ def candidate_task_bulk_update(request): task = request.POST["task"] status = request.POST["status"] - count = CandidateTask.objects.filter(candidate_id__id__in=candidate_id_list,onboarding_task_id = task).update(status=status) + count = CandidateTask.objects.filter( + candidate_id__id__in=candidate_id_list, onboarding_task_id=task + ).update(status=status) # messages.success(request,f"{count} candidate's task status updated successfully") return JsonResponse( @@ -1099,11 +1105,12 @@ def hired_candidate_chart(request): "data": data, "background_color": background_color, "border_color": border_color, - "message": _("No data Found...") + "message": _("No data Found..."), }, safe=False, ) + @login_required def onboard_candidate_chart(request): """ @@ -1136,7 +1143,7 @@ def onboard_candidate_chart(request): "data": data, "background_color": background_color, "border_color": border_color, - "message": _("No data Found...") + "message": _("No data Found..."), }, safe=False, ) diff --git a/recruitment/urls.py b/recruitment/urls.py index 95ef95dfa..d1ce38793 100644 --- a/recruitment/urls.py +++ b/recruitment/urls.py @@ -5,6 +5,7 @@ This module is used to map url path with view methods. """ from django.urls import path +from recruitment.models import Candidate from recruitment.views import views import recruitment.views.actions import recruitment.views.dashboard @@ -39,7 +40,7 @@ urlpatterns = [ recruitment.views.actions.recruitment_delete, name="recruitment-delete", ), - path("pipeline", views.recruitment_pipeline, name="pipeline"), + path("pipeline/", views.recruitment_pipeline, name="pipeline"), path("pipeline-card", views.recruitment_pipeline_card, name="pipeline-card"), path( "pipeline-search-candidate", @@ -113,7 +114,7 @@ urlpatterns = [ name="note-delete-individual", ), path("send-mail//", views.form_send_mail, name="send-mail"), - path("candidate-view", views.candidate_view, name="candidate-view"), + path("candidate-view/", views.candidate_view, name="candidate-view"), path( "candidate-filter-view", recruitment.views.search.candidate_filter_view, @@ -131,11 +132,13 @@ urlpatterns = [ "candidate-view//", views.candidate_view_individual, name="candidate-view-individual", + kwargs={'model':Candidate} ), path( "candidate-update//", views.candidate_update, name="rec-candidate-update", + kwargs={'model':Candidate} ), path( "delete-profile-image//", diff --git a/recruitment/views/views.py b/recruitment/views/views.py index 264a75e7f..7506668f3 100644 --- a/recruitment/views/views.py +++ b/recruitment/views/views.py @@ -33,7 +33,12 @@ from horilla.decorators import permission_required, login_required, hx_request_r from base.methods import get_key_instances from recruitment.views.paginator_qry import paginator_qry from recruitment.models import Recruitment, Candidate, Stage, StageNote -from recruitment.filters import CandidateFilter, CandidateReGroup, RecruitmentFilter, StageFilter +from recruitment.filters import ( + CandidateFilter, + CandidateReGroup, + RecruitmentFilter, + StageFilter, +) from recruitment.methods import recruitment_manages from recruitment.decorators import manager_can_enter, recruitment_manager_can_enter from recruitment.forms import ( @@ -843,7 +848,7 @@ def candidate_view(request): "export_obj": export_obj, "view_type": view_type, "filter_dict": data_dict, - "gp_fields" : CandidateReGroup.fields + "gp_fields": CandidateReGroup.fields, }, ) @@ -938,7 +943,7 @@ def candidate_view_card(request): @login_required @permission_required(perm="recruitment.view_candidate") -def candidate_view_individual(request, cand_id): +def candidate_view_individual(request, cand_id, **kwargs): """ This method is used to view profile of candidate. """ @@ -948,7 +953,7 @@ def candidate_view_individual(request, cand_id): @login_required @manager_can_enter(perm="recruitment.change_candidate") -def candidate_update(request, cand_id): +def candidate_update(request, cand_id, **kwargs): """ Used to update or change the candidate Args: