diff --git a/recruitment/urls.py b/recruitment/urls.py
index 1afa6dd74..8c392e19a 100644
--- a/recruitment/urls.py
+++ b/recruitment/urls.py
@@ -5,7 +5,9 @@ This module is used to map url path with view methods.
"""
from django.urls import path
-from recruitment.models import Candidate
+from base.views import object_duplicate
+from recruitment.forms import OfferLetterForm, QuestionForm, RecruitmentCreationForm, StageCreationForm
+from recruitment.models import Candidate, Recruitment, RecruitmentMailTemplate, RecruitmentSurvey, Stage
from recruitment.views import views
import recruitment.views.actions
import recruitment.views.dashboard
@@ -16,7 +18,7 @@ from recruitment.views.mail_templates import (
view_mail_templates,
create_letter,
delete_mail_templates,
- get_template
+ get_template,
)
urlpatterns = [
@@ -32,6 +34,16 @@ urlpatterns = [
views.recruitment_update,
name="recruitment-update",
),
+ path(
+ "recruitment-duplicate//",
+ object_duplicate,
+ name="recruitment-duplicate",
+ kwargs={
+ "model": Recruitment,
+ "form": RecruitmentCreationForm,
+ "template": "recruitment/recruitment_duplicate_form.html",
+ },
+ ),
path(
"recruitment-update-pipeline//",
views.recruitment_update_pipeline,
@@ -73,6 +85,16 @@ urlpatterns = [
path("stage-view", views.stage_view, name="rec-stage-view"),
path("stage-search", recruitment.views.search.stage_search, name="stage-search"),
path("stage-update//", views.stage_update, name="rec-stage-update"),
+ path(
+ "rec-stage-duplicate//",
+ object_duplicate,
+ name="rec-stage-duplicate",
+ kwargs={
+ "model": Stage,
+ "form": StageCreationForm,
+ "template": "stage/stage_form.html",
+ },
+ ),
path(
"stage-update-pipeline//",
views.stage_update_pipeline,
@@ -254,6 +276,17 @@ urlpatterns = [
recruitment.views.surveys.update_question_template,
name="recruitment-survey-question-template-edit",
),
+ path(
+ "recruitment-survey-question-template-duplicate//",
+ object_duplicate,
+ name="recruitment-survey-question-template-duplicate",
+ kwargs={
+ "model":RecruitmentSurvey,
+ "form":QuestionForm,
+ "template":"survey/template_form.html",
+
+ }
+ ),
path(
"recruitment-survey-question-template-delete//",
recruitment.views.surveys.delete_survey_question,
@@ -274,27 +307,85 @@ urlpatterns = [
recruitment.views.surveys.single_survey,
name="single-survey-view",
),
- path('candidate-select/', views.candidate_select, name='candidate-select'),
- path('candidate-select-filter/', views.candidate_select_filter, name='candidate-select-filter'),
-
- path('skill-zone-view/',views.skill_zone_view,name="skill-zone-view"),
- path('skill-zone-create',views.skill_zone_create,name="skill-zone-create"),
- path('skill-zone-update/',views.skill_zone_update,name="skill-zone-update"),
- path('skill-zone-delete/',views.skill_zone_delete,name="skill-zone-delete"),
- path('skill-zone-archive/',views.skill_zone_archive,name="skill-zone-archive"),
- path('skill-zone-filter',views.skill_zone_filter,name="skill-zone-filter"),
- path('skill-zone-cand-create/',views.skill_zone_candidate_create,name="skill-zone-cand-create"),
- path('skill-zone-cand-card-view//',views.skill_zone_cand_card_view,name="skill-zone-cand-card-view"),
- path('skill-zone-cand-edit//',views.skill_zone_cand_edit,name="skill-zone-cand-edit"),
- path('skill-zone-cand-filter',views.skill_zone_cand_filter,name="skill-zone-cand-filter"),
- path('skill-zone-cand-archive//',views.skill_zone_cand_archive,name="skill-zone-cand-archive"),
- path('to-skill-zone/',views.to_skill_zone,name='to-skill-zone'),
- path('skill-zone-cand-delete/',views.skill_zone_cand_delete,name='skill-zone-cand-delete'),
+ path("candidate-select/", views.candidate_select, name="candidate-select"),
+ path(
+ "candidate-select-filter/",
+ views.candidate_select_filter,
+ name="candidate-select-filter",
+ ),
+ path("skill-zone-view/", views.skill_zone_view, name="skill-zone-view"),
+ path("skill-zone-create", views.skill_zone_create, name="skill-zone-create"),
+ path(
+ "skill-zone-update/",
+ views.skill_zone_update,
+ name="skill-zone-update",
+ ),
+ path(
+ "skill-zone-delete/",
+ views.skill_zone_delete,
+ name="skill-zone-delete",
+ ),
+ path(
+ "skill-zone-archive/",
+ views.skill_zone_archive,
+ name="skill-zone-archive",
+ ),
+ path("skill-zone-filter", views.skill_zone_filter, name="skill-zone-filter"),
+ path(
+ "skill-zone-cand-create/",
+ views.skill_zone_candidate_create,
+ name="skill-zone-cand-create",
+ ),
+ path(
+ "skill-zone-cand-card-view//",
+ views.skill_zone_cand_card_view,
+ name="skill-zone-cand-card-view",
+ ),
+ path(
+ "skill-zone-cand-edit//",
+ views.skill_zone_cand_edit,
+ name="skill-zone-cand-edit",
+ ),
+ path(
+ "skill-zone-cand-filter",
+ views.skill_zone_cand_filter,
+ name="skill-zone-cand-filter",
+ ),
+ path(
+ "skill-zone-cand-archive//",
+ views.skill_zone_cand_archive,
+ name="skill-zone-cand-archive",
+ ),
+ path("to-skill-zone/", views.to_skill_zone, name="to-skill-zone"),
+ path(
+ "skill-zone-cand-delete/",
+ views.skill_zone_cand_delete,
+ name="skill-zone-cand-delete",
+ ),
path("view-mail-templates/", view_mail_templates, name="view-mail-templates"),
path("view-mail-template//", view_letter, name="view-mail-template"),
+ path(
+ "duplicate-mail-template//",
+ object_duplicate,
+ name="duplicate-mail-template",
+ kwargs={
+ "model":RecruitmentMailTemplate,
+ "form":OfferLetterForm,
+ "template":"offerletter/htmx/form.html",
+
+ }
+ ),
path("create-mail-template/", create_letter, name="create-mail-template"),
path("delete-mail-template/", delete_mail_templates, name="delete-mail-template"),
path("get-template//", get_template, name="get-template"),
- path("create-candidate-rating//", views.create_candidate_rating, name="create-candidate-rating"),
- path("update-candidate-rating//", views.update_candidate_rating, name="update-candidate-rating"),
+ path(
+ "create-candidate-rating//",
+ views.create_candidate_rating,
+ name="create-candidate-rating",
+ ),
+ path(
+ "update-candidate-rating//",
+ views.update_candidate_rating,
+ name="update-candidate-rating",
+ ),
]
diff --git a/recruitment/views/mail_templates.py b/recruitment/views/mail_templates.py
index 4437d7e90..d2ca47c68 100644
--- a/recruitment/views/mail_templates.py
+++ b/recruitment/views/mail_templates.py
@@ -42,7 +42,7 @@ def view_letter(request, obj_id):
messages.success(request, "Template updated")
return HttpResponse("")
- return render(request, "offerletter/htmx/form.html", {"form": form})
+ return render(request, "offerletter/htmx/form.html", {"form": form,"duplicate":False})
@login_required
diff --git a/recruitment/views/surveys.py b/recruitment/views/surveys.py
index 7312a3e2a..ffb25aef3 100644
--- a/recruitment/views/surveys.py
+++ b/recruitment/views/surveys.py
@@ -126,7 +126,14 @@ def view_question_template(request):
"""
questions = RecruitmentSurvey.objects.all()
filter_obj = SurveyFilter()
- requests_ids = json.dumps([instance.id for instance in paginator_qry(questions, request.GET.get("page")).object_list])
+ requests_ids = json.dumps(
+ [
+ instance.id
+ for instance in paginator_qry(
+ questions, request.GET.get("page")
+ ).object_list
+ ]
+ )
if questions.exists():
template = "survey/view_question_templates.html"
else:
@@ -137,7 +144,7 @@ def view_question_template(request):
{
"questions": paginator_qry(questions, request.GET.get("page")),
"f": filter_obj,
- "requests_ids":requests_ids,
+ "requests_ids": requests_ids,
},
)
@@ -151,10 +158,6 @@ def update_question_template(request, survey_id):
instance = RecruitmentSurvey.objects.get(id=survey_id)
form = QuestionForm(
instance=instance,
- initial={
- "recruitment": instance.recruitment_ids.all(),
- "job_positions": instance.job_position_ids.all(),
- },
)
if request.method == "POST":
form = QuestionForm(request.POST, instance=instance)
@@ -209,7 +212,7 @@ def delete_survey_question(request, survey_id):
except RecruitmentSurvey.DoesNotExist:
messages.error(request, _("Question not found."))
except ProtectedError:
- messages.error(request, _("You cannot delete this question"))
+ messages.error(request, _("You cannot delete this question"))
return redirect(view_question_template)
@@ -275,7 +278,7 @@ def single_survey(request, survey_id):
"""
question = RecruitmentSurvey.objects.get(id=survey_id)
requests_ids_json = request.GET.get("instances_ids")
- context = {'question' : question}
+ context = {"question": question}
if requests_ids_json:
requests_ids = json.loads(requests_ids_json)
previous_id, next_id = closest_numbers(requests_ids, survey_id)