[UPDT] RECRUITMENT: Updated recruitment app by field label on filter form intead of a static label
This commit is contained in:
@@ -9,6 +9,7 @@ import uuid
|
|||||||
|
|
||||||
import django_filters
|
import django_filters
|
||||||
from django import forms
|
from django import forms
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from base.filters import FilterSet
|
from base.filters import FilterSet
|
||||||
from recruitment.models import (
|
from recruitment.models import (
|
||||||
@@ -169,9 +170,57 @@ class CandidateFilter(FilterSet):
|
|||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.form.fields["is_active"].initial = True
|
|
||||||
for field in self.form.fields.keys():
|
form_fields = self.form.fields
|
||||||
self.form.fields[field].widget.attrs["id"] = f"{uuid.uuid4()}"
|
form_fields["is_active"].initial = True
|
||||||
|
|
||||||
|
for field in form_fields:
|
||||||
|
form_fields[field].widget.attrs["id"] = str(uuid.uuid4())
|
||||||
|
|
||||||
|
self._update_field_labels(form_fields)
|
||||||
|
|
||||||
|
def _update_field_labels(self, form_fields):
|
||||||
|
"""Helper method to update field labels from model verbose names"""
|
||||||
|
|
||||||
|
models = {
|
||||||
|
"recruitment": Recruitment(),
|
||||||
|
"interview": InterviewSchedule(),
|
||||||
|
"skill_zone": SkillZoneCandidate(),
|
||||||
|
}
|
||||||
|
|
||||||
|
interview_date_label = (
|
||||||
|
models["interview"]._meta.get_field("interview_date").verbose_name
|
||||||
|
)
|
||||||
|
|
||||||
|
field_label_map = {
|
||||||
|
"interview_date": interview_date_label,
|
||||||
|
"scheduled_from": f"{interview_date_label} From",
|
||||||
|
"scheduled_till": f"{interview_date_label} Till",
|
||||||
|
"rejected_candidate__reject_reason_id": _("Reject Reason"),
|
||||||
|
"job_position_id__department_id": _("Department"),
|
||||||
|
"stage_id__stage_type": _("Stage Type"),
|
||||||
|
"stage_id__stage_managers": _("Stage Managers"),
|
||||||
|
"skillzonecandidate_set__skill_zone_id": models["skill_zone"]
|
||||||
|
._meta.get_field("skill_zone_id")
|
||||||
|
.verbose_name,
|
||||||
|
"start_date": models["recruitment"]
|
||||||
|
._meta.get_field("start_date")
|
||||||
|
.verbose_name,
|
||||||
|
"end_date": models["recruitment"]._meta.get_field("end_date").verbose_name,
|
||||||
|
"recruitment_id__company_id": models["recruitment"]
|
||||||
|
._meta.get_field("company_id")
|
||||||
|
.verbose_name,
|
||||||
|
"recruitment_id__closed": models["recruitment"]
|
||||||
|
._meta.get_field("closed")
|
||||||
|
.verbose_name,
|
||||||
|
"recruitment_id__recruitment_managers": models["recruitment"]
|
||||||
|
._meta.get_field("recruitment_managers")
|
||||||
|
.verbose_name,
|
||||||
|
}
|
||||||
|
|
||||||
|
for field_name, label in field_label_map.items():
|
||||||
|
if field_name in form_fields:
|
||||||
|
form_fields[field_name].label = label
|
||||||
|
|
||||||
def filter_mail_sent(self, queryset, name, value):
|
def filter_mail_sent(self, queryset, name, value):
|
||||||
return queryset.filter(onboarding_portal__isnull=(not value))
|
return queryset.filter(onboarding_portal__isnull=(not value))
|
||||||
@@ -246,6 +295,13 @@ class RecruitmentFilter(FilterSet):
|
|||||||
"open_positions",
|
"open_positions",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
start_date_verbose = self.Meta.model._meta.get_field("start_date").verbose_name
|
||||||
|
end_date_verbose = self.Meta.model._meta.get_field("end_date").verbose_name
|
||||||
|
self.form.fields["start_from"].label = f"{start_date_verbose} From"
|
||||||
|
self.form.fields["end_till"].label = f"{end_date_verbose} Till"
|
||||||
|
|
||||||
def filter_by_name(self, queryset, _, value):
|
def filter_by_name(self, queryset, _, value):
|
||||||
"""
|
"""
|
||||||
Filter queryset by first name or last name.
|
Filter queryset by first name or last name.
|
||||||
@@ -474,6 +530,7 @@ class SkillZoneCandFilter(FilterSet):
|
|||||||
field_name="candidate__id__joining_date",
|
field_name="candidate__id__joining_date",
|
||||||
lookup_expr="gte",
|
lookup_expr="gte",
|
||||||
widget=forms.DateInput(attrs={"type": "date"}),
|
widget=forms.DateInput(attrs={"type": "date"}),
|
||||||
|
label=_("Joining From"),
|
||||||
)
|
)
|
||||||
probation_end = django_filters.DateFilter(
|
probation_end = django_filters.DateFilter(
|
||||||
field_name="candidate__id__probation_end",
|
field_name="candidate__id__probation_end",
|
||||||
@@ -483,11 +540,13 @@ class SkillZoneCandFilter(FilterSet):
|
|||||||
field_name="candidate__id__probation_end",
|
field_name="candidate__id__probation_end",
|
||||||
lookup_expr="lte",
|
lookup_expr="lte",
|
||||||
widget=forms.DateInput(attrs={"type": "date"}),
|
widget=forms.DateInput(attrs={"type": "date"}),
|
||||||
|
label=_("Probation Till"),
|
||||||
)
|
)
|
||||||
probation_end_from = django_filters.DateFilter(
|
probation_end_from = django_filters.DateFilter(
|
||||||
field_name="candidate__id__probation_end",
|
field_name="candidate__id__probation_end",
|
||||||
lookup_expr="gte",
|
lookup_expr="gte",
|
||||||
widget=forms.DateInput(attrs={"type": "date"}),
|
widget=forms.DateInput(attrs={"type": "date"}),
|
||||||
|
label=_("Probation From"),
|
||||||
)
|
)
|
||||||
schedule_date = django_filters.DateFilter(
|
schedule_date = django_filters.DateFilter(
|
||||||
field_name="candidate__id__schedule_date",
|
field_name="candidate__id__schedule_date",
|
||||||
@@ -497,6 +556,7 @@ class SkillZoneCandFilter(FilterSet):
|
|||||||
field_name="candidate__id__joining_date",
|
field_name="candidate__id__joining_date",
|
||||||
lookup_expr="lte",
|
lookup_expr="lte",
|
||||||
widget=forms.DateInput(attrs={"type": "date"}),
|
widget=forms.DateInput(attrs={"type": "date"}),
|
||||||
|
label=_("Joining Till"),
|
||||||
)
|
)
|
||||||
recruitment = django_filters.CharFilter(
|
recruitment = django_filters.CharFilter(
|
||||||
field_name="candidate__id__recruitment_id__title", lookup_expr="icontains"
|
field_name="candidate__id__recruitment_id__title", lookup_expr="icontains"
|
||||||
@@ -506,11 +566,13 @@ class SkillZoneCandFilter(FilterSet):
|
|||||||
field_name="candidate__id__onboarding_portal",
|
field_name="candidate__id__onboarding_portal",
|
||||||
method="filter_mail_sent",
|
method="filter_mail_sent",
|
||||||
widget=django_filters.widgets.BooleanWidget(),
|
widget=django_filters.widgets.BooleanWidget(),
|
||||||
|
label=_("Portal Sent"),
|
||||||
)
|
)
|
||||||
joining_set = django_filters.BooleanFilter(
|
joining_set = django_filters.BooleanFilter(
|
||||||
field_name="candidate__id__joining_date",
|
field_name="candidate__id__joining_date",
|
||||||
method="filter_joining_set",
|
method="filter_joining_set",
|
||||||
widget=django_filters.widgets.BooleanWidget(),
|
widget=django_filters.widgets.BooleanWidget(),
|
||||||
|
label=_("Joining Set"),
|
||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -583,10 +645,6 @@ class InterviewFilter(FilterSet):
|
|||||||
lookup_expr="gte",
|
lookup_expr="gte",
|
||||||
widget=forms.DateInput(attrs={"type": "date"}),
|
widget=forms.DateInput(attrs={"type": "date"}),
|
||||||
)
|
)
|
||||||
# schedule_date = django_filters.DateFilter(
|
|
||||||
# field_name="interview_date",
|
|
||||||
# widget=forms.DateInput(attrs={"type": "date"}),
|
|
||||||
# )
|
|
||||||
scheduled_till = django_filters.DateFilter(
|
scheduled_till = django_filters.DateFilter(
|
||||||
field_name="interview_date",
|
field_name="interview_date",
|
||||||
lookup_expr="lte",
|
lookup_expr="lte",
|
||||||
@@ -603,40 +661,17 @@ class InterviewFilter(FilterSet):
|
|||||||
"candidate_id",
|
"candidate_id",
|
||||||
"employee_id",
|
"employee_id",
|
||||||
"interview_date",
|
"interview_date",
|
||||||
# "recruitment",
|
|
||||||
# "recruitment_id",
|
|
||||||
# "stage_id",
|
|
||||||
# "schedule_date",
|
|
||||||
# "email",
|
|
||||||
# "mobile",
|
|
||||||
# "country",
|
|
||||||
# "state",
|
|
||||||
# "city",
|
|
||||||
# "zip",
|
|
||||||
# "gender",
|
|
||||||
# "start_onboard",
|
|
||||||
# "hired",
|
|
||||||
# "canceled",
|
|
||||||
# "is_active",
|
|
||||||
# "recruitment_id__company_id",
|
|
||||||
# "job_position_id",
|
|
||||||
# "recruitment_id__closed",
|
|
||||||
# "recruitment_id__is_active",
|
|
||||||
# "job_position_id__department_id",
|
|
||||||
# "recruitment_id__recruitment_managers",
|
|
||||||
# "stage_id__stage_managers",
|
|
||||||
# "stage_id__stage_type",
|
|
||||||
# "joining_date",
|
|
||||||
# "skillzonecandidate_set__skill_zone_id",
|
|
||||||
# "skillzonecandidate_set__candidate_id",
|
|
||||||
# "portal_sent",
|
|
||||||
# "joining_set",
|
|
||||||
# "rejected_candidate__reject_reason_id",
|
|
||||||
# "offer_letter_status",
|
|
||||||
# "candidate_rating__rating",
|
|
||||||
# "candidate_interview__employee_id",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.form["scheduled_from"].label = (
|
||||||
|
f"{self.Meta.model()._meta.get_field('interview_date').verbose_name} From"
|
||||||
|
)
|
||||||
|
self.form["scheduled_till"].label = (
|
||||||
|
f"{self.Meta.model()._meta.get_field('interview_date').verbose_name} Till"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkedInAccountFilter(FilterSet):
|
class LinkedInAccountFilter(FilterSet):
|
||||||
"""LinkedInAccount filter"""
|
"""LinkedInAccount filter"""
|
||||||
|
|||||||
@@ -134,6 +134,7 @@ class Recruitment(HorillaModel):
|
|||||||
help_text=_(
|
help_text=_(
|
||||||
"To close the recruitment, If closed then not visible on pipeline view."
|
"To close the recruitment, If closed then not visible on pipeline view."
|
||||||
),
|
),
|
||||||
|
verbose_name=_("Closed"),
|
||||||
)
|
)
|
||||||
is_published = models.BooleanField(
|
is_published = models.BooleanField(
|
||||||
default=True,
|
default=True,
|
||||||
@@ -143,13 +144,6 @@ class Recruitment(HorillaModel):
|
|||||||
),
|
),
|
||||||
verbose_name=_("Is Published"),
|
verbose_name=_("Is Published"),
|
||||||
)
|
)
|
||||||
is_active = models.BooleanField(
|
|
||||||
default=True,
|
|
||||||
help_text=_(
|
|
||||||
"To archive and un-archive a recruitment, if active is false then it \
|
|
||||||
will not appear on recruitment list view."
|
|
||||||
),
|
|
||||||
)
|
|
||||||
open_positions = models.ManyToManyField(
|
open_positions = models.ManyToManyField(
|
||||||
JobPosition,
|
JobPosition,
|
||||||
related_name="open_positions",
|
related_name="open_positions",
|
||||||
@@ -178,8 +172,10 @@ class Recruitment(HorillaModel):
|
|||||||
blank=True,
|
blank=True,
|
||||||
verbose_name=_("Company"),
|
verbose_name=_("Company"),
|
||||||
)
|
)
|
||||||
start_date = models.DateField(default=django.utils.timezone.now)
|
start_date = models.DateField(
|
||||||
end_date = models.DateField(blank=True, null=True)
|
default=django.utils.timezone.now, verbose_name=_("Start Date")
|
||||||
|
)
|
||||||
|
end_date = models.DateField(blank=True, null=True, verbose_name=_("End Date"))
|
||||||
skills = models.ManyToManyField(Skill, blank=True, verbose_name=_("Skills"))
|
skills = models.ManyToManyField(Skill, blank=True, verbose_name=_("Skills"))
|
||||||
linkedin_account_id = models.ForeignKey(
|
linkedin_account_id = models.ForeignKey(
|
||||||
"recruitment.LinkedInAccount",
|
"recruitment.LinkedInAccount",
|
||||||
@@ -335,6 +331,9 @@ class Stage(HorillaModel):
|
|||||||
verbose_name = _("Stage")
|
verbose_name = _("Stage")
|
||||||
verbose_name_plural = _("Stages")
|
verbose_name_plural = _("Stages")
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"{self.stage} - ({self.recruitment_id.title})"
|
||||||
|
|
||||||
def active_candidates(self):
|
def active_candidates(self):
|
||||||
"""
|
"""
|
||||||
This method is used to get all the active candidate like related objects
|
This method is used to get all the active candidate like related objects
|
||||||
@@ -472,6 +471,7 @@ class Candidate(HorillaModel):
|
|||||||
choices=offer_letter_statuses,
|
choices=offer_letter_statuses,
|
||||||
default="not_sent",
|
default="not_sent",
|
||||||
editable=False,
|
editable=False,
|
||||||
|
verbose_name=_("Offer Letter Status"),
|
||||||
)
|
)
|
||||||
objects = HorillaCompanyManager(related_company_field="recruitment_id__company_id")
|
objects = HorillaCompanyManager(related_company_field="recruitment_id__company_id")
|
||||||
last_updated = models.DateField(null=True, auto_now=True)
|
last_updated = models.DateField(null=True, auto_now=True)
|
||||||
|
|||||||
@@ -104,11 +104,11 @@ x-data="{searchShow: false}"
|
|||||||
style="display: none"
|
style="display: none"
|
||||||
>
|
>
|
||||||
<div class="oh-accordion">
|
<div class="oh-accordion">
|
||||||
<label>{% trans "Group By" %}</label>
|
<label class="oh-label" for="id_field">{% trans "Group By" %}</label>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Field" %}</label>
|
<label class="oh-label" for="id_field">{% trans "Field" %}</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
|||||||
@@ -1,205 +1,252 @@
|
|||||||
{% load static %} {% load i18n %}
|
{% load static %} {% load i18n %}
|
||||||
<div class="oh-modal__dialog-header">
|
<div class="oh-modal__dialog-header">
|
||||||
<h2 class="oh-modal__dialog-title" id="candidateExportLavel">
|
<h2 class="oh-modal__dialog-title" id="candidateExportLavel">
|
||||||
{% trans "Export Candidates" %}
|
{% trans "Export Candidates" %}
|
||||||
</h2>
|
</h2>
|
||||||
<button class="oh-modal__close" aria-label="Close">
|
<button class="oh-modal__close" aria-label="Close">
|
||||||
<ion-icon name="close-outline"></ion-icon>
|
<ion-icon name="close-outline"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="oh-modal__dialog-body">
|
<div class="oh-modal__dialog-body">
|
||||||
<form
|
<form action="{%url 'candidate-info-export' %}" method="get" class="oh-profile-section"
|
||||||
action="{%url 'candidate-info-export' %}"
|
onsubmit="event.stopPropagation();$(this).parents().find('.oh-modal--show').last().toggleClass('oh-modal--show');"
|
||||||
method="get"
|
id="candidateExportForm">
|
||||||
class="oh-profile-section"
|
{% csrf_token %}
|
||||||
onsubmit="event.stopPropagation();$(this).parents().find('.oh-modal--show').last().toggleClass('oh-modal--show');"
|
<div class="oh-dropdown__filter-body" id="">
|
||||||
id="candidateExportForm"
|
<div class="oh-accordion">
|
||||||
>
|
<div class="oh-accordion-header">{% trans "Excel columns" %}</div>
|
||||||
{% csrf_token %}
|
<div class="oh-accordion-body">
|
||||||
<div class="oh-dropdown__filter-body" id="export_attendance_form">
|
<div class="row">
|
||||||
<div class="oh-accordion">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-accordion-header">{% trans "Excel columns" %}</div>
|
<div class="oh-input-group">
|
||||||
<div class="oh-accordion-body">
|
<label class="oh-label">
|
||||||
<div class="row">
|
<input type="checkbox" id="select-all-fields" /> {% trans "Select All" %}
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
</label>
|
||||||
<div class="oh-input-group">
|
</div>
|
||||||
<label class="oh-label">
|
</div>
|
||||||
<input type="checkbox" id="select-all-fields" /> {% trans "Select All" %}
|
</div>
|
||||||
</label>
|
<div class="row">
|
||||||
</div>
|
{% for field in export_column.selected_fields %}
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"> {{ field }} </label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="oh-dropdown__filter-body">
|
||||||
<div class="row">
|
<div class="oh-accordion">
|
||||||
{% for field in export_column.selected_fields %}
|
<div class="oh-accordion-header">{% trans "Candidates" %}</div>
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="oh-accordion-body">
|
||||||
<div class="oh-input-group">
|
<div class="row">
|
||||||
<label class="oh-label"> {{ field }} </label>
|
<div class="col-sm-12 col-md-12 col-lg-12">
|
||||||
</div>
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label">{% trans "Candidate" %}</label>
|
||||||
|
{{export_filter.form.candidate}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.mobile.id_for_label}}">{{export_filter.form.mobile.label}}</label>
|
||||||
|
{{ export_filter.form.mobile }}
|
||||||
|
</div>
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.interview_date.id_for_label}}">{{export_filter.form.interview_date.label}}</label>
|
||||||
|
{{ export_filter.form.interview_date }}
|
||||||
|
</div>
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label">{{export_filter.form.country.label}}</label>
|
||||||
|
{{export_filter.form.country}}
|
||||||
|
</div>
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.hired.id_for_label}}">{{export_filter.form.hired.label}}
|
||||||
|
?</label>
|
||||||
|
{{ export_filter.form.hired }}
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-12 mb-2">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.rejected_candidate__reject_reason_id.id_for_label}}">{{export_filter.form.rejected_candidate__reject_reason_id.label}}
|
||||||
|
</label>
|
||||||
|
{{export_filter.form.rejected_candidate__reject_reason_id}}
|
||||||
|
</div>
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.converted.id_for_label}}">{{export_filter.form.converted.label}}
|
||||||
|
?</label>
|
||||||
|
{{ export_filter.form.converted }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.email.id_for_label}}">{{export_filter.form.email.label}}</label>
|
||||||
|
{{ export_filter.form.email }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.gender.id_for_label}}">{{export_filter.form.gender.label}}</label>
|
||||||
|
{{ export_filter.form.gender }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label">{{export_filter.form.state.label}}</label>
|
||||||
|
{{export_filter.form.state}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.canceled.id_for_label}}">{{export_filter.form.canceled.label}}
|
||||||
|
?</label>
|
||||||
|
{{ export_filter.form.canceled }}
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-12 mb-2">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.offer_letter_status.id_for_label}}">{{export_filter.form.offer_letter_status.label}}
|
||||||
|
</label>
|
||||||
|
{{export_filter.form.offer_letter_status}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-accordion">
|
||||||
|
<div class="oh-accordion-header">
|
||||||
|
{% trans 'Recruitment' %}
|
||||||
|
</div>
|
||||||
|
<div class="oh-accordion-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.recruitment_id.id_for_label}}">{{export_filter.form.recruitment_id.label}}</label>
|
||||||
|
{{ export_filter.form.recruitment_id }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.job_position_id__department_id.id_for_label}}">{{export_filter.form.job_position_id__department_id.label}}</label>
|
||||||
|
{{ export_filter.form.job_position_id__department_id }}
|
||||||
|
</div>
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.recruitment_id__recruitment_managers.id_for_label}}">{{export_filter.form.recruitment_id__recruitment_managers.label}}</label>
|
||||||
|
{{ export_filter.form.recruitment_id__recruitment_managers }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.stage_id.id_for_label}}">{{export_filter.form.stage_id.label}}
|
||||||
|
</label>
|
||||||
|
{{ export_filter.form.stage_id }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.stage_id__stage_type.id_for_label}}">{{export_filter.form.stage_id__stage_type.label}}</label>
|
||||||
|
{{ export_filter.form.stage_id__stage_type }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.start_date.id_for_label}}">{{export_filter.form.start_date.label}}</label>
|
||||||
|
{{ export_filter.form.start_date }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.recruitment_id__company_id.id_for_label}}">{{export_filter.form.recruitment_id__company_id.label}}</label>
|
||||||
|
{{ export_filter.form.recruitment_id__company_id }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.job_position_id.id_for_label}}">{{export_filter.form.job_position_id.label}}</label>
|
||||||
|
{{ export_filter.form.job_position_id }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.skillzonecandidate_set__skill_zone_id.id_for_label}}">{{export_filter.form.skillzonecandidate_set__skill_zone_id.label}}
|
||||||
|
</label>
|
||||||
|
{{ export_filter.form.skillzonecandidate_set__skill_zone_id }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.stage_id__stage_managers.id_for_label}}">{{export_filter.form.stage_id__stage_managers.label}}
|
||||||
|
</label>
|
||||||
|
{{ export_filter.form.stage_id__stage_managers }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.recruitment_id__closed.id_for_label}}">{{export_filter.form.recruitment_id__closed.label}}
|
||||||
|
?</label>
|
||||||
|
{{ export_filter.form.recruitment_id__closed }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.end_date.id_for_label}}">{{export_filter.form.end_date.label}}</label>
|
||||||
|
{{ export_filter.form.end_date }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-accordion">
|
||||||
|
<div class="oh-accordion-header">
|
||||||
|
{% trans 'Advanced' %}
|
||||||
|
</div>
|
||||||
|
<div class="oh-accordion-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.scheduled_from.id_for_label}}">{{export_filter.form.scheduled_from.label}}
|
||||||
|
</label>
|
||||||
|
{{ export_filter.form.scheduled_from }}
|
||||||
|
</div>
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.is_active.id_for_label}}">{{export_filter.form.is_active.label}}
|
||||||
|
?</label>
|
||||||
|
{{ export_filter.form.is_active }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{export_filter.form.scheduled_till.id_for_label}}">{{export_filter.form.scheduled_till.label}}
|
||||||
|
</label>
|
||||||
|
{{ export_filter.form.scheduled_till }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="oh-dropdown__filter-body">
|
|
||||||
<div class="oh-accordion">
|
|
||||||
<div class="oh-accordion-header">{% trans "Candidates" %}</div>
|
|
||||||
<div class="oh-accordion-body">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-12">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Candidate" %}</label>
|
|
||||||
{{export_filter.form.candidate}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Phone" %}</label>
|
|
||||||
{{export_filter.form.mobile}}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Interview Date" %}</label>
|
|
||||||
{{export_filter.form.interview_date}}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Country" %}</label>
|
|
||||||
{{export_filter.form.country}}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Is Hired" %}?</label>
|
|
||||||
{{export_filter.form.hired}}
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-12 col-md-12 mb-2">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Reject Reason" %}</label>
|
|
||||||
{{export_filter.form.rejected_candidate__reject_reason_id}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Email" %}</label>
|
|
||||||
{{export_filter.form.email}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Gender" %}</label>
|
|
||||||
{{export_filter.form.gender}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "State" %}</label>
|
|
||||||
{{export_filter.form.state}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Is Canceled" %}?</label>
|
|
||||||
{{export_filter.form.canceled}}
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-12 col-md-12 mb-2">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Offer Status" %}</label>
|
|
||||||
{{export_filter.form.offer_letter_status}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="oh-accordion">
|
|
||||||
<div class="oh-accordion-header">{% trans "Recruitment" %}</div>
|
|
||||||
<div class="oh-accordion-body">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Recruitment" %}</label>
|
|
||||||
{{export_filter.form.recruitment_id}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Job Position" %}</label>
|
|
||||||
{{export_filter.form.job_position_id}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Start Date" %}</label>
|
|
||||||
{{export_filter.form.start_date}}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Is Closed" %}?</label>
|
|
||||||
{{export_filter.form.recruitment_id__closed}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Stage Type" %}</label>
|
|
||||||
{{export_filter.form.stage_id__stage_type}}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Stage Managers" %}</label>
|
|
||||||
{{export_filter.form.stage_id__stage_managers}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Stage" %}</label>
|
|
||||||
{{export_filter.form.stage_id}}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Department" %}</label>
|
|
||||||
{{export_filter.form.job_position_id__department_id}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Company" %}</label>
|
|
||||||
{{export_filter.form.recruitment_id__company_id}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label"
|
|
||||||
>{% trans "Recruitment Managers" %}</label
|
|
||||||
>
|
|
||||||
{{export_filter.form.recruitment_id__recruitment_managers}}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "End Date" %}</label>
|
|
||||||
{{export_filter.form.end_date}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="oh-accordion">
|
<div class="oh-modal__dialog-footer p-0 mt-3">
|
||||||
<div class="oh-accordion-header">{% trans "Advanced" %}</div>
|
<button type="submit" class="oh-btn oh-btn--secondary oh-btn--shadow">
|
||||||
<div class="oh-accordion-body">
|
{% trans "Export" %}
|
||||||
<div class="row">
|
</button>
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Interview From" %}</label>
|
|
||||||
{{export_filter.form.scheduled_from}}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Is Active" %}?</label>
|
|
||||||
{{export_filter.form.is_active}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Interview Till" %}</label>
|
|
||||||
{{export_filter.form.scheduled_till}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-modal__dialog-footer p-0 mt-3">
|
|
||||||
<button type="submit" class="oh-btn oh-btn--secondary oh-btn--shadow">
|
|
||||||
{% trans "Export" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,169 +2,200 @@
|
|||||||
{% load static %}
|
{% load static %}
|
||||||
<input type="hidden" name="search" id="filterSearch" />
|
<input type="hidden" name="search" id="filterSearch" />
|
||||||
<div class="oh-dropdown__filter-body">
|
<div class="oh-dropdown__filter-body">
|
||||||
<div class="oh-accordion">
|
<div class="oh-accordion">
|
||||||
<div class="oh-accordion-header">
|
<div class="oh-accordion-header">
|
||||||
{% trans 'Candidates' %}
|
{% trans 'Candidates' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="oh-accordion-body">
|
<div class="oh-accordion-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans 'Phone' %}</label>
|
<label class="oh-label" for="{{f.form.mobile.id_for_label}}">{{f.form.mobile.label}}</label>
|
||||||
{{ f.form.mobile }}
|
{{ f.form.mobile }}
|
||||||
</div>
|
</div>
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans 'Interview Date' %}</label>
|
<label class="oh-label"
|
||||||
{{ f.form.interview_date }}
|
for="{{f.form.interview_date.id_for_label}}">{{f.form.interview_date.label}}</label>
|
||||||
</div>
|
{{ f.form.interview_date }}
|
||||||
<div class="oh-input-group">
|
</div>
|
||||||
<label class="oh-label">{% trans 'Country' %}</label>
|
<div class="oh-input-group">
|
||||||
<select name="country" class="oh-select-2 w-100 country" id="country">
|
<label class="oh-label" for="country">{{f.form.country.label}}</label>
|
||||||
</select>
|
<select name="country" class="oh-select-2 w-100 country" id="country">
|
||||||
</div>
|
</select>
|
||||||
<div class="oh-input-group">
|
</div>
|
||||||
<label class="oh-label">{% trans 'Is Hired' %}?</label>
|
<div class="oh-input-group">
|
||||||
{{ f.form.hired }}
|
<label class="oh-label" for="{{f.form.hired.id_for_label}}">{{f.form.hired.label}} ?</label>
|
||||||
</div>
|
{{ f.form.hired }}
|
||||||
<div class="col-sm-12 col-md-12 col-lg-12 mb-2">
|
</div>
|
||||||
<div class="oh-input-group">
|
<div class="col-sm-12 col-md-12 col-lg-12 mb-2">
|
||||||
<label class="oh-label">{% trans "Reject Reason" %}</label>
|
<div class="oh-input-group">
|
||||||
{{f.form.rejected_candidate__reject_reason_id}}
|
<label class="oh-label"
|
||||||
|
for="{{f.form.rejected_candidate__reject_reason_id.id_for_label}}">{{f.form.rejected_candidate__reject_reason_id.label}}
|
||||||
|
</label>
|
||||||
|
{{f.form.rejected_candidate__reject_reason_id}}
|
||||||
|
</div>
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="{{f.form.converted.id_for_label}}">{{f.form.converted.label}}
|
||||||
|
?</label>
|
||||||
|
{{ f.form.converted }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="{{f.form.email.id_for_label}}">{{f.form.email.label}}</label>
|
||||||
|
{{ f.form.email }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="{{f.form.gender.id_for_label}}">{{f.form.gender.label}}</label>
|
||||||
|
{{ f.form.gender }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="state">{{f.form.state.label}}</label>
|
||||||
|
<select name="state" class="oh-select-2 w-100 country" id="state">
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="{{f.form.canceled.id_for_label}}">{{f.form.canceled.label}}
|
||||||
|
?</label>
|
||||||
|
{{ f.form.canceled }}
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-12 mb-2">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.offer_letter_status.id_for_label}}">{{f.form.offer_letter_status.label}}
|
||||||
|
</label>
|
||||||
|
{{f.form.offer_letter_status}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="oh-input-group">
|
</div>
|
||||||
<label class="oh-label">{% trans 'Is Converted' %}?</label>
|
</div>
|
||||||
{{ f.form.converted }}
|
<div class="oh-accordion">
|
||||||
|
<div class="oh-accordion-header">
|
||||||
|
{% trans 'Recruitment' %}
|
||||||
|
</div>
|
||||||
|
<div class="oh-accordion-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.recruitment_id.id_for_label}}">{{f.form.recruitment_id.label}}</label>
|
||||||
|
{{ f.form.recruitment_id }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.job_position_id__department_id.id_for_label}}">{{f.form.job_position_id__department_id.label}}</label>
|
||||||
|
{{ f.form.job_position_id__department_id }}
|
||||||
|
</div>
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.recruitment_id__recruitment_managers.id_for_label}}">{{f.form.recruitment_id__recruitment_managers.label}}</label>
|
||||||
|
{{ f.form.recruitment_id__recruitment_managers }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="{{f.form.stage_id.id_for_label}}">{{f.form.stage_id.label}}
|
||||||
|
</label>
|
||||||
|
{{ f.form.stage_id }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.stage_id__stage_type.id_for_label}}">{{f.form.stage_id__stage_type.label}}</label>
|
||||||
|
{{ f.form.stage_id__stage_type }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.start_date.id_for_label}}">{{f.form.start_date.label}}</label>
|
||||||
|
{{ f.form.start_date }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.recruitment_id__company_id.id_for_label}}">{{f.form.recruitment_id__company_id.label}}</label>
|
||||||
|
{{ f.form.recruitment_id__company_id }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.job_position_id.id_for_label}}">{{f.form.job_position_id.label}}</label>
|
||||||
|
{{ f.form.job_position_id }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.skillzonecandidate_set__skill_zone_id.id_for_label}}">{{f.form.skillzonecandidate_set__skill_zone_id.label}}
|
||||||
|
</label>
|
||||||
|
{{ f.form.skillzonecandidate_set__skill_zone_id }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.stage_id__stage_managers.id_for_label}}">{{f.form.stage_id__stage_managers.label}}
|
||||||
|
</label>
|
||||||
|
{{ f.form.stage_id__stage_managers }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.recruitment_id__closed.id_for_label}}">{{f.form.recruitment_id__closed.label}}
|
||||||
|
?</label>
|
||||||
|
{{ f.form.recruitment_id__closed }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="{{f.form.end_date.id_for_label}}">{{f.form.end_date.label}}</label>
|
||||||
|
{{ f.form.end_date }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
</div>
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Email' %}</label>
|
|
||||||
{{ f.form.email }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
<div class="oh-accordion">
|
||||||
<label class="oh-label">{% trans 'Gender' %}</label>
|
<div class="oh-accordion-header">
|
||||||
{{ f.form.gender }}
|
{% trans 'Advanced' %}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="oh-accordion-body">
|
||||||
<div class="oh-input-group">
|
<div class="row">
|
||||||
<label class="oh-label">{% trans 'State' %}</label>
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<select name="state" class="oh-select-2 w-100 country" id="state">
|
<div class="oh-input-group">
|
||||||
</select>
|
<label class="oh-label"
|
||||||
</div>
|
for="{{f.form.scheduled_from.id_for_label}}">{{f.form.scheduled_from.label}} </label>
|
||||||
|
{{ f.form.scheduled_from }}
|
||||||
<div class="oh-input-group">
|
</div>
|
||||||
<label class="oh-label">{% trans 'Is Canceled' %}?</label>
|
<div class="oh-input-group">
|
||||||
{{ f.form.canceled }}
|
<label class="oh-label" for="{{f.form.is_active.id_for_label}}">{{f.form.is_active.label}}
|
||||||
</div>
|
?</label>
|
||||||
<div class="col-sm-12 col-md-12 col-lg-12 mb-2">
|
{{ f.form.is_active }}
|
||||||
<div class="oh-input-group">
|
</div>
|
||||||
<label class="oh-label">{% trans "Offer Status" %}</label>
|
</div>
|
||||||
{{f.form.offer_letter_status}}
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.scheduled_till.id_for_label}}">{{f.form.scheduled_till.label}} </label>
|
||||||
|
{{ f.form.scheduled_till }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="oh-accordion">
|
|
||||||
<div class="oh-accordion-header">
|
|
||||||
{% trans 'Recruitment' %}
|
|
||||||
</div>
|
|
||||||
<div class="oh-accordion-body">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Recruitment' %}</label>
|
|
||||||
{{ f.form.recruitment_id }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Job Position' %}</label>
|
|
||||||
{{ f.form.job_position_id }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Start Date' %}</label>
|
|
||||||
{{ f.form.start_date }}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Is Closed' %}?</label>
|
|
||||||
{{ f.form.recruitment_id__closed }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Stage Type' %}</label>
|
|
||||||
{{ f.form.stage_id__stage_type }}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Stage Managers' %}</label>
|
|
||||||
{{ f.form.stage_id__stage_managers }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Stage' %}</label>
|
|
||||||
{{ f.form.stage_id }}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Department' %}</label>
|
|
||||||
{{ f.form.job_position_id__department_id }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Company' %}</label>
|
|
||||||
{{ f.form.recruitment_id__company_id }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Recruitment Managers' %}</label>
|
|
||||||
{{ f.form.recruitment_id__recruitment_managers }}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'End Date' %}</label>
|
|
||||||
{{ f.form.end_date }}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Skill Zone' %}</label>
|
|
||||||
{{ f.form.skillzonecandidate_set__skill_zone_id }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="oh-accordion">
|
|
||||||
<div class="oh-accordion-header">
|
|
||||||
{% trans 'Advanced' %}
|
|
||||||
</div>
|
|
||||||
<div class="oh-accordion-body">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Interview From' %}</label>
|
|
||||||
{{ f.form.scheduled_from }}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Is Active' %}?</label>
|
|
||||||
{{ f.form.is_active }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans 'Interview Till' %}</label>
|
|
||||||
{{ f.form.scheduled_till }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="oh-dropdown__filter-footer">
|
<div class="oh-dropdown__filter-footer">
|
||||||
<button class="oh-btn oh-btn--secondary oh-btn--small w-100 filterButton" id="#candidateFilter" onclick="event.stopPropagation()" >{% trans 'Filter' %}</button>
|
<button class="oh-btn oh-btn--secondary oh-btn--small w-100 filterButton" id="#candidateFilter"
|
||||||
|
onclick="event.stopPropagation()">{% trans 'Filter' %}
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="{% static '/base/filter.js' %}"></script>
|
<script src="{% static '/base/filter.js' %}"></script>
|
||||||
<script>
|
<script>
|
||||||
{% include "country.js" %}
|
{% include "country.js" %}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -86,7 +86,7 @@
|
|||||||
{% if perms.recruitment.change_interviewschedule or request.user.employee_get in interview.employee_id.all %}
|
{% if perms.recruitment.change_interviewschedule or request.user.employee_get in interview.employee_id.all %}
|
||||||
<a hx-confirm="{% trans 'Are you sure you want to remove this interviewer?' %}"
|
<a hx-confirm="{% trans 'Are you sure you want to remove this interviewer?' %}"
|
||||||
hx-post="{% url 'interview-employee-remove' interview.id employee.id %}"
|
hx-post="{% url 'interview-employee-remove' interview.id employee.id %}"
|
||||||
title="{% trans " Remove" %}" hx-swap="outerHTML" hx-target="#section"
|
title="{% trans " Remove" %}" hx-swap="outerHTML"
|
||||||
onclick="event.stopPropagation()">
|
onclick="event.stopPropagation()">
|
||||||
<ion-icon name="close-outline"></ion-icon>
|
<ion-icon name="close-outline"></ion-icon>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -1,155 +1,133 @@
|
|||||||
{% load i18n %}{% load static recruitmentfilters %}
|
{% load i18n %}{% load static recruitmentfilters %}
|
||||||
<section
|
<section class="oh-wrapper oh-main__topbar" x-data="{searchShow: false}">
|
||||||
class="oh-wrapper oh-main__topbar"
|
<div class="oh-main__titlebar oh-main__titlebar--left">
|
||||||
x-data="{searchShow: false}"
|
<h1 class="oh-main__titlebar-title fw-bold">
|
||||||
>
|
{% trans "Scheduled Interviews" %}
|
||||||
<div class="oh-main__titlebar oh-main__titlebar--left">
|
</h1>
|
||||||
<h1 class="oh-main__titlebar-title fw-bold">
|
</div>
|
||||||
{% trans "Scheduled Interviews" %}
|
<form hx-get="{% url 'interview-filter-view' %}" hx-target="#section" id="filterForm" class="d-flex"
|
||||||
</h1>
|
onsubmit="event.preventDefault()">
|
||||||
</div>
|
<div class="oh-main__titlebar oh-main__titlebar--right oh-d-flex-column--resp oh-mb-3--small">
|
||||||
<form
|
|
||||||
hx-get="{% url 'interview-filter-view' %}"
|
|
||||||
hx-target="#section"
|
|
||||||
id="filterForm"
|
|
||||||
class="d-flex"
|
|
||||||
onsubmit = "event.preventDefault()"
|
|
||||||
>
|
|
||||||
<div class="oh-main__titlebar oh-main__titlebar--right oh-d-flex-column--resp oh-mb-3--small">
|
|
||||||
|
|
||||||
<div class="oh-main__titlebar-button-container">
|
<div class="oh-main__titlebar-button-container">
|
||||||
<div class="oh-input-group oh-input__search-group mr-4">
|
<div class="oh-input-group oh-input__search-group mr-4">
|
||||||
<ion-icon name="search-outline" class="oh-input-group__icon oh-input-group__icon--left md hydrated" role="img" aria-label="search outline"></ion-icon>
|
<ion-icon name="search-outline" class="oh-input-group__icon oh-input-group__icon--left md hydrated"
|
||||||
<input
|
role="img" aria-label="search outline"></ion-icon>
|
||||||
name="search" type="text" placeholder="Search"
|
<input name="search" type="text" placeholder="Search" style="margin-right:10px"
|
||||||
style="margin-right:10px" class="oh-input oh-input__icon mr-3"
|
class="oh-input oh-input__icon mr-3" autocomplete="false" aria-label="Search Input"
|
||||||
autocomplete="false"
|
onkeyup="$('.filterButton')[0].click()" />
|
||||||
aria-label="Search Input"
|
|
||||||
onkeyup="$('.filterButton')[0].click()"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="oh-dropdown" x-data="{open: false}">
|
|
||||||
<button
|
|
||||||
class="oh-btn ml-2"
|
|
||||||
@click="open = !open"
|
|
||||||
onclick="event.preventDefault()"
|
|
||||||
>
|
|
||||||
<ion-icon name="filter" class="mr-1"></ion-icon>{% trans "Filter" %}
|
|
||||||
<div id="filterCount"></div>
|
|
||||||
</button>
|
|
||||||
<div
|
|
||||||
class="oh-dropdown__menu oh-dropdown__menu--right oh-dropdown__filter p-4"
|
|
||||||
x-show="open"
|
|
||||||
@click.outside="open = false"
|
|
||||||
style="display: none"
|
|
||||||
>
|
|
||||||
<div class="oh-dropdown__filter-body">
|
|
||||||
<div class="oh-accordion">
|
|
||||||
<div class="oh-accordion-header">{% trans "Interview" %}</div>
|
|
||||||
<div class="oh-accordion-body">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label" for="{{f.form.employee_id.id_for_label}}">{% trans "Candidate" %}</label>
|
|
||||||
{{f.form.candidate_id}}
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="oh-dropdown" x-data="{open: false}">
|
||||||
|
<button class="oh-btn ml-2" @click="open = !open" onclick="event.preventDefault()">
|
||||||
|
<ion-icon name="filter" class="mr-1"></ion-icon>{% trans "Filter" %}
|
||||||
|
<div id="filterCount"></div>
|
||||||
|
</button>
|
||||||
|
<div class="oh-dropdown__menu oh-dropdown__menu--right oh-dropdown__filter p-4" x-show="open"
|
||||||
|
@click.outside="open = false" style="display: none">
|
||||||
|
<div class="oh-dropdown__filter-body">
|
||||||
|
<div class="oh-accordion">
|
||||||
|
<div class="oh-accordion-header">{% trans "Interview" %}</div>
|
||||||
|
<div class="oh-accordion-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label" for="{{f.form.start_date.id_for_label}}">{% trans "Interview Date From" %}</label>
|
<label class="oh-label" for="{{f.form.candidate_id.id_for_label}}">
|
||||||
{{f.form.scheduled_from}}
|
{{f.form.candidate_id.label}}</label>
|
||||||
|
{{f.form.candidate_id}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="{{f.form.scheduled_from.id_for_label}}">
|
||||||
|
{{f.form.scheduled_from.label}}</label>
|
||||||
|
{{f.form.scheduled_from}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="{{f.form.employee_id.id_for_label}}">
|
||||||
|
{{f.form.employee_id.label}}</label>
|
||||||
|
{{f.form.employee_id}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="{{f.form.scheduled_till.id_for_label}}">
|
||||||
|
{{f.form.scheduled_till.label}}</label>
|
||||||
|
{{f.form.scheduled_till}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="oh-dropdown__filter-footer">
|
||||||
|
<button class="oh-btn oh-btn--secondary oh-btn--small w-100 filterButton">
|
||||||
|
{% trans "Filter" %}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="oh-btn-group ml-2">
|
||||||
</div>
|
<div class="oh-dropdown">
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
{% if perms.recruitment.add_interviewschedule %}
|
||||||
|
<a hx-get='{% url "create-interview-schedule" %}' hx-target="#createTarget" hx-swap="innerHTML"
|
||||||
<div class="oh-input-group">
|
data-target="#createModal" data-toggle="oh-modal-toggle" class='oh-btn oh-btn--secondary'>
|
||||||
<label class="oh-label" for ="{{f.form.action.id_for_label}}">{% trans "Interviewer" %}</label>
|
<ion-icon name="add-sharp" class="mr-1"></ion-icon>{% trans "Create" %}
|
||||||
{{f.form.employee_id}}
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label" for="{{f.form.start_date.id_for_label}}">{% trans "Interview Date Till" %}</label>
|
|
||||||
{{f.form.scheduled_till}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
<div class="oh-dropdown__filter-footer">
|
|
||||||
<button
|
|
||||||
class="oh-btn oh-btn--secondary oh-btn--small w-100 filterButton"
|
|
||||||
>
|
|
||||||
{% trans "Filter" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="oh-btn-group ml-2">
|
|
||||||
<div class="oh-dropdown" >
|
|
||||||
{% if perms.recruitment.add_interviewschedule %}
|
|
||||||
<a hx-get='{% url "create-interview-schedule" %}'
|
|
||||||
hx-target="#createTarget"
|
|
||||||
hx-swap="innerHTML"
|
|
||||||
data-target="#createModal"
|
|
||||||
data-toggle="oh-modal-toggle"
|
|
||||||
class='oh-btn oh-btn--secondary'
|
|
||||||
>
|
|
||||||
<ion-icon name="add-sharp" class="mr-1"></ion-icon>{% trans "Create" %}
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</section>
|
</section>
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
function candidateFilter(element) {
|
function candidateFilter(element) {
|
||||||
var search = $("#candidate-search").val();
|
var search = $("#candidate-search").val();
|
||||||
const form = document.querySelector("#filterForm");
|
const form = document.querySelector("#filterForm");
|
||||||
const formData = new FormData(form);
|
const formData = new FormData(form);
|
||||||
const queryString = new URLSearchParams(formData).toString();
|
const queryString = new URLSearchParams(formData).toString();
|
||||||
const searchParams = new URLSearchParams(queryString);
|
const searchParams = new URLSearchParams(queryString);
|
||||||
const queryObject = Object.fromEntries(searchParams.entries());
|
const queryObject = Object.fromEntries(searchParams.entries());
|
||||||
view = $(element).attr("data-view");
|
view = $(element).attr("data-view");
|
||||||
queryObject["search"] = search;
|
queryObject["search"] = search;
|
||||||
queryObject["view"] = view;
|
queryObject["view"] = view;
|
||||||
stringQueyObject = JSON.stringify(queryObject);
|
stringQueyObject = JSON.stringify(queryObject);
|
||||||
// $('#list').attr('hx-vals', stringQueyObject);
|
// $('#list').attr('hx-vals', stringQueyObject);
|
||||||
// $('#card').attr('hx-vals', stringQueyObject);
|
// $('#card').attr('hx-vals', stringQueyObject);
|
||||||
}
|
|
||||||
|
|
||||||
$("#candidate-search").keyup(function (e) {
|
|
||||||
$(".candidate-view-type").attr(
|
|
||||||
"hx-vals",
|
|
||||||
`{"search":"${$(this).val()}"}`
|
|
||||||
);
|
|
||||||
});
|
|
||||||
$(".candidate-view-type").on("click", function (e) {
|
|
||||||
let view = $(this).attr("data-view");
|
|
||||||
var currentURL = window.location.href;
|
|
||||||
if (view != undefined) {
|
|
||||||
if (/\?view=[^&]+/.test(currentURL)) {
|
|
||||||
newURL = currentURL.replace(/\?view=[^&]+/, "?view=" + view);
|
|
||||||
} else {
|
|
||||||
var separator = currentURL.includes("?") ? "&" : "?";
|
|
||||||
newURL = currentURL + separator + "view=" + view;
|
|
||||||
}
|
}
|
||||||
history.pushState({}, "", newURL);
|
|
||||||
$("#candidate-search").attr("hx-vals", `{"view":"${view}"}`);
|
$("#candidate-search").keyup(function (e) {
|
||||||
$("#filterForm").attr("hx-vals", `{"view":"${view}"}`);
|
$(".candidate-view-type").attr(
|
||||||
$(".oh-btn--view-active").removeClass("oh-btn--view-active");
|
"hx-vals",
|
||||||
$(this).children("a").addClass("oh-btn--view-active");
|
`{"search":"${$(this).val()}"}`
|
||||||
}
|
);
|
||||||
|
});
|
||||||
|
$(".candidate-view-type").on("click", function (e) {
|
||||||
|
let view = $(this).attr("data-view");
|
||||||
|
var currentURL = window.location.href;
|
||||||
|
if (view != undefined) {
|
||||||
|
if (/\?view=[^&]+/.test(currentURL)) {
|
||||||
|
newURL = currentURL.replace(/\?view=[^&]+/, "?view=" + view);
|
||||||
|
} else {
|
||||||
|
var separator = currentURL.includes("?") ? "&" : "?";
|
||||||
|
newURL = currentURL + separator + "view=" + view;
|
||||||
|
}
|
||||||
|
history.pushState({}, "", newURL);
|
||||||
|
$("#candidate-search").attr("hx-vals", `{"view":"${view}"}`);
|
||||||
|
$("#filterForm").attr("hx-vals", `{"view":"${view}"}`);
|
||||||
|
$(".oh-btn--view-active").removeClass("oh-btn--view-active");
|
||||||
|
$(this).children("a").addClass("oh-btn--view-active");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#id_field').on('change', function () {
|
||||||
|
$('.filterButton')[0].click();
|
||||||
|
})
|
||||||
});
|
});
|
||||||
$('#id_field').on('change',function(){
|
|
||||||
$('.filterButton')[0].click();
|
|
||||||
})
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script src="{% static '/candidate/bulk.js' %}"></script>
|
<script src="{% static '/candidate/bulk.js' %}"></script>
|
||||||
|
|||||||
@@ -9,72 +9,42 @@
|
|||||||
</form>
|
</form>
|
||||||
<script>
|
<script>
|
||||||
$("#skillform .col-md-6").toggleClass("col-md-6");
|
$("#skillform .col-md-6").toggleClass("col-md-6");
|
||||||
|
$(document).ready(function () {
|
||||||
|
const $candidateSelect = $("[name=candidate_id]");
|
||||||
|
const $managerSelect = $("[name=employee_id]");
|
||||||
|
const selectedManagers = $managerSelect.val();
|
||||||
|
|
||||||
$(document).ready(function(){
|
function fetchManagers(candidateId, selected = null) {
|
||||||
var candidate_id = $('[name=candidate_id]').val();
|
if (!candidateId) return;
|
||||||
var selectedmanagers = $('[name=employee_id]').val();
|
|
||||||
|
|
||||||
// Make AJAX request to fetch available Managers for the selected Candidate
|
$.ajax({
|
||||||
$.ajax({
|
url: '{% url "get_managers" %}',
|
||||||
url: '{% url "get_managers" %}',
|
method: "GET",
|
||||||
method: 'GET',
|
data: { cand_id: candidateId },
|
||||||
data: {
|
success: function (data) {
|
||||||
'cand_id': candidate_id
|
$managerSelect.empty();
|
||||||
},
|
$.each(data.employees, function (key, value) {
|
||||||
success: function(data) {
|
$managerSelect.append(
|
||||||
// Clear existing options in the Managers dropdown
|
$("<option>", {
|
||||||
$('[name=employee_id]').empty();
|
value: key,
|
||||||
|
text: value,
|
||||||
// Append new options based on the response
|
})
|
||||||
$.each(data.employees, function(key, value) {
|
);
|
||||||
|
});
|
||||||
$('[name=employee_id]').append($('<option>', {
|
|
||||||
value: key,
|
|
||||||
text: value
|
|
||||||
}));
|
|
||||||
|
|
||||||
|
if (selected) {
|
||||||
|
$managerSelect.val(selected);
|
||||||
|
}
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Set the selected Managers back to the dropdown
|
// Initial load
|
||||||
if (selectedmanagers) {
|
fetchManagers($candidateSelect.val(), selectedManagers);
|
||||||
$('[name=employee_id]').val(selectedmanagers);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
})
|
// On candidate change
|
||||||
|
$candidateSelect.on("change", function () {
|
||||||
$('[name=candidate_id]').change(function(){
|
fetchManagers(this.value, $managerSelect.val());
|
||||||
var candidate_id = $('[name=candidate_id]').val();
|
|
||||||
var selectedmanagers = $('[name=employee_id]').val();
|
|
||||||
|
|
||||||
// Make AJAX request to fetch available Managers for the selected Candidate
|
|
||||||
$.ajax({
|
|
||||||
url: '{% url "get_managers" %}',
|
|
||||||
method: 'GET',
|
|
||||||
data: {
|
|
||||||
'cand_id': candidate_id
|
|
||||||
},
|
|
||||||
success: function(data) {
|
|
||||||
// Clear existing options in the Managers dropdown
|
|
||||||
$('[name=employee_id]').empty();
|
|
||||||
|
|
||||||
// Append new options based on the response
|
|
||||||
$.each(data.employees, function(key, value) {
|
|
||||||
|
|
||||||
$('[name=employee_id]').append($('<option>', {
|
|
||||||
value: key,
|
|
||||||
text: value
|
|
||||||
}));
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// Set the selected Managers back to the dropdown
|
|
||||||
if (selectedmanagers) {
|
|
||||||
$('[name=employee_id]').val(selectedmanagers);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,73 +1,69 @@
|
|||||||
{% load i18n %}{% load static %}
|
{% load i18n %}{% load static %}
|
||||||
<div class="oh-dropdown__filter-body">
|
<div class="oh-dropdown__filter-body">
|
||||||
<div class="oh-accordion">
|
<div class="oh-accordion">
|
||||||
<div class="oh-accordion-header">{% trans "Recruitment" %}</div>
|
<div class="oh-accordion-header">{% trans "Recruitment" %}</div>
|
||||||
<div class="oh-accordion-body">
|
<div class="oh-accordion-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Managers" %}</label>
|
<label class="oh-label" for="{{f.form.recruitment_managers.id_for_label}}">{{f.form.recruitment_managers.label}}</label>
|
||||||
{{f.form.recruitment_managers}}
|
{{f.form.recruitment_managers}}
|
||||||
</div>
|
</div>
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Start Date" %}</label>
|
<label class="oh-label" for="{{f.form.start_date.id_for_label}}">{{f.form.start_date.label}}</label>
|
||||||
{{f.form.start_date}}
|
{{f.form.start_date}}
|
||||||
</div>
|
</div>
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Is Closed" %}</label>
|
<label class="oh-label" for="{{f.form.closed.id_for_label}}">{{f.form.closed.label}}</label>
|
||||||
{% comment %} {{f.form.closed}} {% endcomment %}
|
{% comment %} {{f.form.closed}} {% endcomment %}
|
||||||
<select name="closed" id="closed" class="oh-select oh-select-2 w-100">
|
{{f.form.closed}}
|
||||||
<option value="unknown">{% trans "Unknown" %}</option>
|
</div>
|
||||||
<option value="true">{% trans "True" %}</option>
|
</div>
|
||||||
<option value="false" selected>{% trans "False" %}</option>
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
</select>
|
<div class="oh-input-group">
|
||||||
</div>
|
<label class="oh-label" for="{{f.form.company_id.id_for_label}}">{{f.form.company_id.label}}</label>
|
||||||
|
{{f.form.company_id}}
|
||||||
|
</div>
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="{{f.form.end_date.id_for_label}}">{{f.form.end_date.label}}</label>
|
||||||
|
{{f.form.end_date}}
|
||||||
|
</div>
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="{{f.form.is_published.id_for_label}}">{{f.form.is_published.label}}</label>
|
||||||
|
{{f.form.is_published}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Company" %}</label>
|
|
||||||
{{f.form.company_id}}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "End Date" %}</label>
|
|
||||||
{{f.form.end_date}}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Is Published" %}</label>
|
|
||||||
{{f.form.is_published}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="oh-accordion">
|
<div class="oh-accordion">
|
||||||
<div class="oh-accordion-header">{% trans "Advanced" %}</div>
|
<div class="oh-accordion-header">{% trans "Advanced" %}</div>
|
||||||
<div class="oh-accordion-body">
|
<div class="oh-accordion-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Start Date From" %}</label>
|
<label class="oh-label" for="{{f.form.start_from.id_for_label}}"> {{f.form.start_from.label}}</label>
|
||||||
{{f.form.start_from}}
|
{{f.form.start_from}}
|
||||||
</div>
|
</div>
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Is Active" %}?</label>
|
<label class="oh-label" for="{{f.form.is_active.id_for_label}}">{{f.form.is_active.label}} ?</label>
|
||||||
{{f.form.is_active}}
|
{{f.form.is_active}}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label" for="{{f.form.end_till.id_for_label}}">{{f.form.end_till.label}}</label>
|
||||||
|
{{f.form.end_till}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Till End Date" %}</label>
|
|
||||||
{{f.form.end_till}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="oh-dropdown__filter-footer">
|
<div class="oh-dropdown__filter-footer">
|
||||||
<button class="oh-btn oh-btn--secondary oh-btn--small w-100 filterButton" id="">{% trans "Filter" %}</button>
|
<button class="oh-btn oh-btn--secondary oh-btn--small w-100 filterButton" id="">{% trans "Filter" %}</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<script src="{% static '/base/filter.js' %}"></script>
|
<script src="{% static '/base/filter.js' %}"></script>
|
||||||
|
|||||||
@@ -18,8 +18,7 @@
|
|||||||
<ion-icon name="search-outline" class="oh-input-group__icon oh-input-group__icon--left"></ion-icon>
|
<ion-icon name="search-outline" class="oh-input-group__icon oh-input-group__icon--left"></ion-icon>
|
||||||
<input type="text" class="oh-input oh-input__icon" aria-label="Search Input"
|
<input type="text" class="oh-input oh-input__icon" aria-label="Search Input"
|
||||||
placeholder="{% trans 'Search' %}" name="search" hx-get="{% url 'skill-zone-filter' %}"
|
placeholder="{% trans 'Search' %}" name="search" hx-get="{% url 'skill-zone-filter' %}"
|
||||||
onkeyup="$('.filterButton').click()"
|
onkeyup="$('.filterButton').click()" />
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="oh-main__titlebar-button-container">
|
<div class="oh-main__titlebar-button-container">
|
||||||
@@ -28,7 +27,8 @@
|
|||||||
<ion-icon name="filter" class="mr-1"></ion-icon>{% trans "Filter" %}<div id="filterCount"></div>
|
<ion-icon name="filter" class="mr-1"></ion-icon>{% trans "Filter" %}<div id="filterCount"></div>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<div class="oh-dropdown__menu oh-dropdown__menu--right oh-dropdown__filter p-4" x-show="open" style="display: none" @click.outside="open = false">
|
<div class="oh-dropdown__menu oh-dropdown__menu--right oh-dropdown__filter p-4" x-show="open"
|
||||||
|
style="display: none" @click.outside="open = false">
|
||||||
<div class="oh-dropdown__filter-body">
|
<div class="oh-dropdown__filter-body">
|
||||||
<div class="oh-accordion">
|
<div class="oh-accordion">
|
||||||
<div class="oh-accordion-header">{% trans "Candidate Filter" %}</div>
|
<div class="oh-accordion-header">{% trans "Candidate Filter" %}</div>
|
||||||
@@ -36,84 +36,92 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Recruitment" %}</label>
|
<label class="oh-label"
|
||||||
|
for="{{f.form.candidate_id.id_for_label}}">{{f.form.candidate_id.label}}</label>
|
||||||
|
{{f.form.candidate_id}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.candidate_id__recruitment_id.id_for_label}}">{{f.form.candidate_id__recruitment_id.label}}</label>
|
||||||
{{f.form.candidate_id__recruitment_id}}
|
{{f.form.candidate_id__recruitment_id}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Candidates" %}</label>
|
<label class="oh-label"
|
||||||
{{f.form.candidate_id}}
|
for="{{f.form.candidate_id__job_position_id.id_for_label}}">{{f.form.candidate_id__job_position_id.label}}</label>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Job Position" %}</label>
|
|
||||||
{{f.form.candidate_id__job_position_id}}
|
{{f.form.candidate_id__job_position_id}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6 mb-2">
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Joining From" %}</label>
|
<label class="oh-label"
|
||||||
{{f.form.scheduled_from}}
|
for="{{f.form.candidate_id__rejected_candidate__reject_reason_id.id_for_label}}">
|
||||||
|
{% trans "Reject Reason" %}
|
||||||
|
</label>
|
||||||
|
{{f.form.candidate_id__rejected_candidate__reject_reason_id}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Joining Till" %}</label>
|
<label class="oh-label"
|
||||||
|
for="{{f.form.scheduled_from.id_for_label}}">{{f.form.scheduled_from.label}}</label>
|
||||||
|
{{f.form.scheduled_from}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.scheduled_till.id_for_label}}">{{f.form.scheduled_till.label}}</label>
|
||||||
{{f.form.scheduled_till}}
|
{{f.form.scheduled_till}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Probation From" %}</label>
|
<label class="oh-label"
|
||||||
|
for="{{f.form.probation_end_from.id_for_label}}">{{f.form.probation_end_from.label}}</label>
|
||||||
{{f.form.probation_end_from}}
|
{{f.form.probation_end_from}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Probation Till" %}</label>
|
<label class="oh-label"
|
||||||
|
for="{{f.form.probation_end_till.id_for_label}}">{{f.form.probation_end_till.label}}</label>
|
||||||
{{f.form.probation_end_till}}
|
{{f.form.probation_end_till}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Portal Sent" %}</label>
|
<label class="oh-label"
|
||||||
|
for="{{f.form.portal_sent.id_for_label}}">{{f.form.portal_sent.label}}</label>
|
||||||
{{f.form.portal_sent}}
|
{{f.form.portal_sent}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Joining Set" %}</label>
|
<label class="oh-label"
|
||||||
|
for="{{f.form.joining_set.id_for_label}}">{{f.form.joining_set.label}}</label>
|
||||||
{{f.form.joining_set}}
|
{{f.form.joining_set}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6 mb-2">
|
<div class="col-sm-12 col-md-12 col-lg-6 mb-2">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Reject Reason" %}</label>
|
<label class="oh-label"
|
||||||
{{f.form.candidate_id__rejected_candidate__reject_reason_id}}
|
for="{{f.form.candidate_id__offer_letter_status.id_for_label}}">{{f.form.candidate_id__offer_letter_status.label}}</label>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6 mb-2">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Offer Status" %}</label>
|
|
||||||
{{f.form.candidate_id__offer_letter_status}}
|
{{f.form.candidate_id__offer_letter_status}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Is Active" %}</label>
|
<label class="oh-label"
|
||||||
|
for="{{f.form.is_active.id_for_label}}">{{f.form.is_active.label}}</label>
|
||||||
{{f.form.is_active}}
|
{{f.form.is_active}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -134,8 +142,9 @@
|
|||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class="oh-btn-group ml-2">
|
<div class="oh-btn-group ml-2">
|
||||||
<a class="oh-btn oh-btn--secondary oh-btn--shadow" data-toggle="oh-modal-toggle" data-target="#objectCreateModal"
|
<a class="oh-btn oh-btn--secondary oh-btn--shadow" data-toggle="oh-modal-toggle"
|
||||||
hx-get="{% url 'skill-zone-create' %}" hx-target="#objectCreateModalTarget">
|
data-target="#objectCreateModal" hx-get="{% url 'skill-zone-create' %}"
|
||||||
|
hx-target="#objectCreateModalTarget">
|
||||||
<ion-icon name="add-outline" class="me-1"></ion-icon>
|
<ion-icon name="add-outline" class="me-1"></ion-icon>
|
||||||
{% trans "Create" %}
|
{% trans "Create" %}
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -1,41 +1,44 @@
|
|||||||
{% load i18n %}{% load static %}
|
{% load i18n %}{% load static %}
|
||||||
<div class="oh-dropdown__filter-body">
|
<div class="oh-dropdown__filter-body">
|
||||||
<div class="oh-accordion">
|
<div class="oh-accordion">
|
||||||
<div class="oh-accordion-header">{% trans "Stage" %}</div>
|
<div class="oh-accordion-header">{% trans "Stage" %}</div>
|
||||||
<div class="oh-accordion-body">
|
<div class="oh-accordion-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="oh-input-group">
|
<div class="oh-input-group">
|
||||||
<label class="oh-label">{% trans "Recruitment Managers" %}</label>
|
<label class="oh-label"
|
||||||
{{f.form.recruitment_id__recruitment_managers}}
|
for="{{f.form.recruitment_id__recruitment_managers.id_for_label}}">{{f.form.recruitment_id__recruitment_managers.label}}</label>
|
||||||
</div>
|
{{f.form.recruitment_id__recruitment_managers}}
|
||||||
<div class="oh-input-group">
|
</div>
|
||||||
<label class="oh-label">{% trans "Recruitment" %}</label>
|
<div class="oh-input-group">
|
||||||
{{f.form.recruitment_id}}
|
<label class="oh-label"
|
||||||
</div>
|
for="{{f.form.recruitment_id.id_for_label}}">{{f.form.recruitment_id.label}}</label>
|
||||||
<div class="oh-input-group">
|
{{f.form.recruitment_id}}
|
||||||
<label class="oh-label">{% trans "Stage Type" %}</label>
|
</div>
|
||||||
{{f.form.stage_type}}
|
<div class="oh-input-group">
|
||||||
</div>
|
<label class="oh-label"
|
||||||
|
for="{{f.form.stage_type.id_for_label}}">{{f.form.stage_type.label}}</label>
|
||||||
|
{{f.form.stage_type}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.stage_managers.id_for_label}}">{{f.form.stage_managers.label}}</label>
|
||||||
|
{{f.form.stage_managers}}
|
||||||
|
</div>
|
||||||
|
<div class="oh-input-group">
|
||||||
|
<label class="oh-label"
|
||||||
|
for="{{f.form.recruitment_id__company_id.id_for_label}}">{{f.form.recruitment_id__company_id.label}}</label>
|
||||||
|
{{f.form.recruitment_id__company_id}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Stage Managers" %}</label>
|
|
||||||
{{f.form.stage_managers}}
|
|
||||||
</div>
|
|
||||||
<div class="oh-input-group">
|
|
||||||
<label class="oh-label">{% trans "Company" %}</label>
|
|
||||||
{{f.form.recruitment_id__company_id}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="oh-dropdown__filter-footer">
|
<div class="oh-dropdown__filter-footer">
|
||||||
<button class="oh-btn oh-btn--secondary oh-btn--small w-100 filterButton" id="">{% trans "Filter" %}</button>
|
<button class="oh-btn oh-btn--secondary oh-btn--small w-100 filterButton" id="">{% trans "Filter" %}</button>
|
||||||
</div>
|
</div>
|
||||||
<script src="{% static '/base/filter.js' %}"></script>
|
<script src="{% static '/base/filter.js' %}"></script>
|
||||||
|
|||||||
@@ -87,7 +87,7 @@
|
|||||||
></ion-icon>
|
></ion-icon>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
<span class="oh-permission-table__user">{{stage}}</span>
|
<span class="oh-permission-table__user">{{stage.stage}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div data-cell-index="1" class="oh-sticky-table__td">
|
<div data-cell-index="1" class="oh-sticky-table__td">
|
||||||
|
|||||||
@@ -1500,7 +1500,7 @@ def interview_employee_remove(request, interview_id, employee_id):
|
|||||||
interview.employee_id.remove(employee_id)
|
interview.employee_id.remove(employee_id)
|
||||||
messages.success(request, "Interviewer removed succesfully.")
|
messages.success(request, "Interviewer removed succesfully.")
|
||||||
interview.save()
|
interview.save()
|
||||||
return redirect(interview_filter_view)
|
return HttpResponse("<script>$('.filterButton')[0].click()</script>")
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@@ -2620,7 +2620,9 @@ def open_recruitments(request):
|
|||||||
"""
|
"""
|
||||||
This method is used to render the open recruitment page
|
This method is used to render the open recruitment page
|
||||||
"""
|
"""
|
||||||
recruitments = Recruitment.default.filter(closed=False, is_published=True)
|
recruitments = Recruitment.default.filter(
|
||||||
|
closed=False, is_published=True, is_active=True
|
||||||
|
)
|
||||||
context = {
|
context = {
|
||||||
"recruitments": recruitments,
|
"recruitments": recruitments,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user