[FIX] RECRUITMENT: Next and previous button bug fixes
This commit is contained in:
@@ -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", "/"))
|
||||
|
||||
|
||||
|
||||
@@ -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", "/"))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user