[FIX] RECRUITMENT: Next and previous button bug fixes

This commit is contained in:
Horilla
2024-06-11 22:59:38 +05:30
parent 8fe447e740
commit ccf934872a
2 changed files with 192 additions and 163 deletions

View File

@@ -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", "/"))

View File

@@ -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", "/"))