diff --git a/recruitment/views/actions.py b/recruitment/views/actions.py index dfe2206d4..b556f5b41 100644 --- a/recruitment/views/actions.py +++ b/recruitment/views/actions.py @@ -36,43 +36,48 @@ def recruitment_delete(request, rec_id): id : recruitment_id """ try: - recruitment_obj = Recruitment.objects.get(id=rec_id) - except Recruitment.DoesNotExist: - messages.error(request, _("Recruitment not found.")) - return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) - recruitment_mangers = recruitment_obj.recruitment_managers.all() - all_stage_permissions = Permission.objects.filter( - content_type__app_label="recruitment", content_type__model="stage" - ) - all_candidate_permissions = Permission.objects.filter( - content_type__app_label="recruitment", content_type__model="candidate" - ) - for manager in recruitment_mangers: - all_this_manger = manager.recruitment_set.all() - if len(all_this_manger) == 1: - for stage_permission in all_candidate_permissions: - manager.employee_user_id.user_permissions.remove(stage_permission.id) - for candidate_permission in all_stage_permissions: - manager.employee_user_id.user_permissions.remove( - candidate_permission.id - ) - try: - recruitment_obj.delete() - messages.success(request, _("Recruitment deleted successfully.")) - except ProtectedError as e: - model_verbose_name_sets = set() - for obj in e.protected_objects: - model_verbose_name_sets.add(__(obj._meta.verbose_name.capitalize())) - model_verbose_name_str = (",").join(model_verbose_name_sets) - messages.error( - request, - _( - "You cannot delete this recruitment as it is using in {}".format( - model_verbose_name_str - ) - ), + try: + recruitment_obj = Recruitment.objects.get(id=rec_id) + except Recruitment.DoesNotExist: + messages.error(request, _("Recruitment not found.")) + return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) + recruitment_mangers = recruitment_obj.recruitment_managers.all() + all_stage_permissions = Permission.objects.filter( + content_type__app_label="recruitment", content_type__model="stage" ) - recruitment_obj = Recruitment.objects.all() + all_candidate_permissions = Permission.objects.filter( + content_type__app_label="recruitment", content_type__model="candidate" + ) + for manager in recruitment_mangers: + all_this_manger = manager.recruitment_set.all() + if len(all_this_manger) == 1: + for stage_permission in all_candidate_permissions: + manager.employee_user_id.user_permissions.remove( + stage_permission.id + ) + for candidate_permission in all_stage_permissions: + manager.employee_user_id.user_permissions.remove( + candidate_permission.id + ) + try: + recruitment_obj.delete() + messages.success(request, _("Recruitment deleted successfully.")) + except ProtectedError as e: + model_verbose_name_sets = set() + for obj in e.protected_objects: + model_verbose_name_sets.add(__(obj._meta.verbose_name.capitalize())) + model_verbose_name_str = (",").join(model_verbose_name_sets) + messages.error( + request, + _( + "You cannot delete this recruitment as it is using in {}".format( + model_verbose_name_str + ) + ), + ) + recruitment_obj = Recruitment.objects.all() + except (Recruitment.DoesNotExist, OverflowError): + messages.error(request, _("Recruitment Does not exists..")) return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) @@ -146,40 +151,43 @@ def stage_delete(request, stage_id): id : stage_id """ try: - stage_obj = Stage.objects.get(id=stage_id) - except Stage.DoesNotExist: - messages.error(request, _("Stage not found.")) - return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) + try: + stage_obj = Stage.objects.get(id=stage_id) + except Stage.DoesNotExist: + messages.error(request, _("Stage not found.")) + return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) - stage_managers = stage_obj.stage_managers.all() - for manager in stage_managers: - all_this_manger = manager.stage_set.all() - if len(all_this_manger) == 1: - view_recruitment = Permission.objects.get(codename="view_recruitment") - manager.employee_user_id.user_permissions.remove(view_recruitment.id) - initial_stage_manager = all_this_manger.filter(stage_type="initial") - if len(initial_stage_manager) == 1: - add_candidate = Permission.objects.get(codename="add_candidate") - change_candidate = Permission.objects.get(codename="change_candidate") - manager.employee_user_id.user_permissions.remove(add_candidate.id) - manager.employee_user_id.user_permissions.remove(change_candidate.id) - stage_obj.stage_managers.remove(manager) - try: - stage_obj.delete() - messages.success(request, _("Stage deleted successfully.")) - except ProtectedError as e: - models_verbose_name_sets = set() - for obj in e.protected_objects: - models_verbose_name_sets.add(__(obj._meta.verbose_name.capitalize())) - models_verbose_name_str = (",").join(models_verbose_name_sets) - messages.error( - request, - _( - "You cannot delete this stage while it's in use for {}".format( - models_verbose_name_str - ) - ), - ) + stage_managers = stage_obj.stage_managers.all() + for manager in stage_managers: + all_this_manger = manager.stage_set.all() + if len(all_this_manger) == 1: + view_recruitment = Permission.objects.get(codename="view_recruitment") + manager.employee_user_id.user_permissions.remove(view_recruitment.id) + initial_stage_manager = all_this_manger.filter(stage_type="initial") + if len(initial_stage_manager) == 1: + add_candidate = Permission.objects.get(codename="add_candidate") + change_candidate = Permission.objects.get(codename="change_candidate") + manager.employee_user_id.user_permissions.remove(add_candidate.id) + manager.employee_user_id.user_permissions.remove(change_candidate.id) + stage_obj.stage_managers.remove(manager) + try: + stage_obj.delete() + messages.success(request, _("Stage deleted successfully.")) + except ProtectedError as e: + models_verbose_name_sets = set() + for obj in e.protected_objects: + models_verbose_name_sets.add(__(obj._meta.verbose_name.capitalize())) + models_verbose_name_str = (",").join(models_verbose_name_sets) + messages.error( + request, + _( + "You cannot delete this stage while it's in use for {}".format( + models_verbose_name_str + ) + ), + ) + except (Stage.DoesNotExist, OverflowError): + messages.error(request, _("Stage Does not exists..")) return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) @@ -193,23 +201,26 @@ def candidate_delete(request, cand_id): id : candidate_id """ try: - Candidate.objects.get(id=cand_id).delete() - messages.success(request, _("Candidate deleted successfully.")) - except Candidate.DoesNotExist: - messages.error(request, _("Candidate not found.")) - except ProtectedError as e: - models_verbose_name_set = set() - for obj in e.protected_objects: - models_verbose_name_set.add(__(obj._meta.verbose_name.capitalize())) - models_verbose_name_str = (",").join(models_verbose_name_set) - messages.error( - request, - _( - "You cannot delete this candidate because the candidate is in {}.".format( - models_verbose_name_str - ) - ), - ) + try: + Candidate.objects.get(id=cand_id).delete() + messages.success(request, _("Candidate deleted successfully.")) + except Candidate.DoesNotExist: + messages.error(request, _("Candidate not found.")) + except ProtectedError as e: + models_verbose_name_set = set() + for obj in e.protected_objects: + models_verbose_name_set.add(__(obj._meta.verbose_name.capitalize())) + models_verbose_name_str = (",").join(models_verbose_name_set) + messages.error( + request, + _( + "You cannot delete this candidate because the candidate is in {}.".format( + models_verbose_name_str + ) + ), + ) + except (Candidate.DoesNotExist, OverflowError): + messages.error(request, _("Candidate Does not exists.")) return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) @@ -245,11 +256,14 @@ def candidate_archive(request, cand_id): """ This method is used to archive or un-archive candidates """ - candidate_obj = Candidate.objects.get(id=cand_id) - candidate_obj.is_active = not candidate_obj.is_active - candidate_obj.save() - message = _("archived") if not candidate_obj.is_active else _("un-archived") - messages.success(request, _("Candidate is %(message)s") % {"message": message}) + try: + candidate_obj = Candidate.objects.get(id=cand_id) + candidate_obj.is_active = not candidate_obj.is_active + candidate_obj.save() + message = _("archived") if not candidate_obj.is_active else _("un-archived") + messages.success(request, _("Candidate is %(message)s") % {"message": message}) + except (Candidate.DoesNotExist, OverflowError): + messages.error(request, _("Candidate Does not exists.")) return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) diff --git a/recruitment/views/views.py b/recruitment/views/views.py index 20883db42..86070ca66 100644 --- a/recruitment/views/views.py +++ b/recruitment/views/views.py @@ -601,13 +601,16 @@ def recruitment_archive(request, rec_id): 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() + try: + recruitment = Recruitment.objects.get(id=rec_id) + if recruitment.is_active: + recruitment.is_active = False + else: + recruitment.is_active = True + recruitment.save() + except (Recruitment.DoesNotExist, OverflowError): + messages.error(request, _("Recruitment Does not exists..")) + return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) @@ -700,11 +703,13 @@ def recruitment_close_pipeline(request, rec_id): """ This method is used to close recruitment from pipeline view """ - recruitment_obj = Recruitment.objects.get(id=rec_id) - recruitment_obj.closed = True - recruitment_obj.save() - - messages.success(request, "Recruitment closed successfully") + try: + recruitment_obj = Recruitment.objects.get(id=rec_id) + recruitment_obj.closed = True + recruitment_obj.save() + messages.success(request, "Recruitment closed successfully") + except (Recruitment.DoesNotExist, OverflowError): + messages.error(request, _("Recruitment Does not exists..")) return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) @@ -1441,7 +1446,8 @@ def candidate_view_individual(request, cand_id, **kwargs): else filtered_candidate_ids ) - # employee_id = cand_id + next_id = None + previous_id = None for index, req_id in enumerate(requests_ids): if req_id == cand_id: @@ -1481,36 +1487,41 @@ def candidate_update(request, cand_id, **kwargs): Args: id : candidate_id """ - candidate_obj = Candidate.objects.get(id=cand_id) - form = CandidateCreationForm(instance=candidate_obj) - path = "/recruitment/candidate-view" - if request.method == "POST": - form = CandidateCreationForm( - request.POST, request.FILES, instance=candidate_obj - ) - if form.is_valid(): - candidate_obj = form.save() - if candidate_obj.stage_id is None: - candidate_obj.stage_id = Stage.objects.filter( - recruitment_id=candidate_obj.recruitment_id, stage_type="initial" - ).first() - if candidate_obj.stage_id is not None: - if ( - candidate_obj.stage_id.recruitment_id - != candidate_obj.recruitment_id - ): - candidate_obj.stage_id = ( - candidate_obj.recruitment_id.stage_set.filter( - stage_type="initial" - ).first() - ) - if request.GET.get("onboarding") == "True": - candidate_obj.hired = True - path = "/onboarding/candidates-view" - candidate_obj.save() - messages.success(request, _("Candidate Updated Successfully.")) - return redirect(path) - return render(request, "candidate/candidate_create_form.html", {"form": form}) + try: + candidate_obj = Candidate.objects.get(id=cand_id) + form = CandidateCreationForm(instance=candidate_obj) + path = "/recruitment/candidate-view" + if request.method == "POST": + form = CandidateCreationForm( + request.POST, request.FILES, instance=candidate_obj + ) + if form.is_valid(): + candidate_obj = form.save() + if candidate_obj.stage_id is None: + candidate_obj.stage_id = Stage.objects.filter( + recruitment_id=candidate_obj.recruitment_id, + stage_type="initial", + ).first() + if candidate_obj.stage_id is not None: + if ( + candidate_obj.stage_id.recruitment_id + != candidate_obj.recruitment_id + ): + candidate_obj.stage_id = ( + candidate_obj.recruitment_id.stage_set.filter( + stage_type="initial" + ).first() + ) + if request.GET.get("onboarding") == "True": + candidate_obj.hired = True + path = "/onboarding/candidates-view" + candidate_obj.save() + messages.success(request, _("Candidate Updated Successfully.")) + return redirect(path) + return render(request, "candidate/candidate_create_form.html", {"form": form}) + except (Candidate.DoesNotExist, OverflowError): + messages.error(request, _("Candidate Does not exists..")) + return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) @login_required @@ -1521,35 +1532,39 @@ def candidate_conversion(request, cand_id, **kwargs): Args: cand_id : candidate instance id """ - candidate_obj = Candidate.objects.filter(id=cand_id) - for detail in candidate_obj: - can_name = detail.name - can_mob = detail.mobile - can_job = detail.job_position_id - can_dep = can_job.department_id - can_mail = detail.email - can_gender = detail.gender - can_company = detail.recruitment_id.company_id - user_exists = User.objects.filter(username=can_mail).exists() - if user_exists: - messages.error(request, _("Employee instance already exist")) - elif not Employee.objects.filter(employee_user_id__username=can_mail).exists(): - new_employee = Employee.objects.create( - employee_first_name=can_name, - email=can_mail, - phone=can_mob, - gender=can_gender, - ) - work_info, created = EmployeeWorkInformation.objects.get_or_create( - employee_id=new_employee - ) - work_info.job_position_id = can_job - work_info.department_id = can_dep - work_info.company_id = can_company - work_info.save() - messages.success(request, _("Employee instance created successfully")) - else: - messages.info(request, "A employee with this mail already exists") + try: + candidate_obj = Candidate.objects.filter(id=cand_id) + for detail in candidate_obj: + can_name = detail.name + can_mob = detail.mobile + can_job = detail.job_position_id + can_dep = can_job.department_id + can_mail = detail.email + can_gender = detail.gender + can_company = detail.recruitment_id.company_id + user_exists = User.objects.filter(username=can_mail).exists() + if user_exists: + messages.error(request, _("Employee instance already exist")) + elif not Employee.objects.filter(employee_user_id__username=can_mail).exists(): + new_employee = Employee.objects.create( + employee_first_name=can_name, + email=can_mail, + phone=can_mob, + gender=can_gender, + ) + work_info, created = EmployeeWorkInformation.objects.get_or_create( + employee_id=new_employee + ) + work_info.job_position_id = can_job + work_info.department_id = can_dep + work_info.company_id = can_company + work_info.save() + messages.success(request, _("Employee instance created successfully")) + else: + messages.info(request, "A employee with this mail already exists") + + except (Candidate.DoesNotExist, OverflowError): + messages.error(request, _("Candidate Does not exists..")) return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/"))