[ADD] RECRUITMENT: Added filter and selection method in edit forms

This commit is contained in:
Horilla
2024-07-17 15:51:50 +05:30
parent 06f6c16659
commit e05366d4f1
3 changed files with 42 additions and 26 deletions

View File

@@ -261,18 +261,18 @@ class RecruitmentCreationForm(ModelForm):
super().__init__(*args, **kwargs)
reload_queryset(self.fields)
if not self.instance.pk:
self.fields["recruitment_managers"] = HorillaMultiSelectField(
queryset=Employee.objects.filter(is_active=True),
widget=HorillaMultiSelectWidget(
filter_route_name="employee-widget-filter",
filter_class=EmployeeFilter,
filter_instance_contex_name="f",
filter_template_path="employee_filters.html",
required=True,
),
label="Employee",
)
self.fields["recruitment_managers"] = HorillaMultiSelectField(
queryset=Employee.objects.filter(is_active=True),
widget=HorillaMultiSelectWidget(
filter_route_name="employee-widget-filter",
filter_class=EmployeeFilter,
filter_instance_contex_name="f",
filter_template_path="employee_filters.html",
required=True,
instance=self.instance,
),
label="Managers",
)
skill_choices = [("", _("---Choose Skills---"))] + list(
self.fields["skills"].queryset.values_list("id", "title")
@@ -322,18 +322,18 @@ class StageCreationForm(ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
reload_queryset(self.fields)
if not self.instance.pk:
self.fields["stage_managers"] = HorillaMultiSelectField(
queryset=Employee.objects.filter(is_active=True),
widget=HorillaMultiSelectWidget(
filter_route_name="employee-widget-filter",
filter_class=EmployeeFilter,
filter_instance_contex_name="f",
filter_template_path="employee_filters.html",
required=True,
),
label="Employee",
)
self.fields["stage_managers"] = HorillaMultiSelectField(
queryset=Employee.objects.filter(is_active=True),
widget=HorillaMultiSelectWidget(
filter_route_name="employee-widget-filter",
filter_class=EmployeeFilter,
filter_instance_contex_name="f",
filter_template_path="employee_filters.html",
required=True,
instance=self.instance,
),
label="Stage Managers",
)
def clean(self):
if isinstance(self.fields["stage_managers"], HorillaMultiSelectField):

View File

@@ -164,7 +164,7 @@
type="submit"
class="oh-btn oh-btn--secondary pl-5 pr-5"
hx-post="{% url 'recruitment-create' %}"
hx-target="#addRecruitmentModalBody"
hx-target="#objectCreateModalTarget"
>
{% trans "Add" %}
</button>

View File

@@ -327,6 +327,11 @@ def recruitment_update(request, rec_id):
for sur in survey.recruitmentsurvey_set.all():
sur.recruitment_ids.add(recruitment_obj)
recruitment_obj.save()
recruitment_obj.recruitment_managers.set(
Employee.objects.filter(
id__in=form.data.getlist("recruitment_managers")
)
)
messages.success(request, _("Recruitment Updated."))
response = render(
request, "recruitment/recruitment_form.html", {"form": form}
@@ -717,6 +722,9 @@ def stage_update_pipeline(request, stage_id):
form = StageCreationForm(request.POST, instance=stage_obj)
if form.is_valid():
stage_obj = form.save()
stage_obj.stage_managers.set(
Employee.objects.filter(id__in=form.data.getlist("stage_managers"))
)
messages.success(request, _("Stage updated."))
with contextlib.suppress(Exception):
managers = stage_obj.stage_managers.select_related("employee_user_id")
@@ -756,6 +764,11 @@ def recruitment_update_pipeline(request, rec_id):
form = RecruitmentCreationForm(request.POST, instance=recruitment_obj)
if form.is_valid():
recruitment_obj = form.save()
recruitment_obj.recruitment_managers.set(
Employee.objects.filter(
id__in=form.data.getlist("recruitment_managers")
)
)
messages.success(request, _("Recruitment updated."))
with contextlib.suppress(Exception):
managers = recruitment_obj.recruitment_managers.select_related(
@@ -1212,7 +1225,10 @@ def stage_update(request, stage_id):
if request.method == "POST":
form = StageCreationForm(request.POST, instance=stages)
if form.is_valid():
form.save()
stage_obj = form.save()
stage_obj.stage_managers.set(
Employee.objects.filter(id__in=form.data.getlist("stage_managers"))
)
messages.success(request, _("Stage updated."))
response = render(
request, "recruitment/recruitment_form.html", {"form": form}