[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
|
||||
from django import forms
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from base.filters import FilterSet
|
||||
from recruitment.models import (
|
||||
@@ -169,9 +170,57 @@ class CandidateFilter(FilterSet):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.form.fields["is_active"].initial = True
|
||||
for field in self.form.fields.keys():
|
||||
self.form.fields[field].widget.attrs["id"] = f"{uuid.uuid4()}"
|
||||
|
||||
form_fields = self.form.fields
|
||||
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):
|
||||
return queryset.filter(onboarding_portal__isnull=(not value))
|
||||
@@ -246,6 +295,13 @@ class RecruitmentFilter(FilterSet):
|
||||
"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):
|
||||
"""
|
||||
Filter queryset by first name or last name.
|
||||
@@ -474,6 +530,7 @@ class SkillZoneCandFilter(FilterSet):
|
||||
field_name="candidate__id__joining_date",
|
||||
lookup_expr="gte",
|
||||
widget=forms.DateInput(attrs={"type": "date"}),
|
||||
label=_("Joining From"),
|
||||
)
|
||||
probation_end = django_filters.DateFilter(
|
||||
field_name="candidate__id__probation_end",
|
||||
@@ -483,11 +540,13 @@ class SkillZoneCandFilter(FilterSet):
|
||||
field_name="candidate__id__probation_end",
|
||||
lookup_expr="lte",
|
||||
widget=forms.DateInput(attrs={"type": "date"}),
|
||||
label=_("Probation Till"),
|
||||
)
|
||||
probation_end_from = django_filters.DateFilter(
|
||||
field_name="candidate__id__probation_end",
|
||||
lookup_expr="gte",
|
||||
widget=forms.DateInput(attrs={"type": "date"}),
|
||||
label=_("Probation From"),
|
||||
)
|
||||
schedule_date = django_filters.DateFilter(
|
||||
field_name="candidate__id__schedule_date",
|
||||
@@ -497,6 +556,7 @@ class SkillZoneCandFilter(FilterSet):
|
||||
field_name="candidate__id__joining_date",
|
||||
lookup_expr="lte",
|
||||
widget=forms.DateInput(attrs={"type": "date"}),
|
||||
label=_("Joining Till"),
|
||||
)
|
||||
recruitment = django_filters.CharFilter(
|
||||
field_name="candidate__id__recruitment_id__title", lookup_expr="icontains"
|
||||
@@ -506,11 +566,13 @@ class SkillZoneCandFilter(FilterSet):
|
||||
field_name="candidate__id__onboarding_portal",
|
||||
method="filter_mail_sent",
|
||||
widget=django_filters.widgets.BooleanWidget(),
|
||||
label=_("Portal Sent"),
|
||||
)
|
||||
joining_set = django_filters.BooleanFilter(
|
||||
field_name="candidate__id__joining_date",
|
||||
method="filter_joining_set",
|
||||
widget=django_filters.widgets.BooleanWidget(),
|
||||
label=_("Joining Set"),
|
||||
)
|
||||
|
||||
class Meta:
|
||||
@@ -583,10 +645,6 @@ class InterviewFilter(FilterSet):
|
||||
lookup_expr="gte",
|
||||
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(
|
||||
field_name="interview_date",
|
||||
lookup_expr="lte",
|
||||
@@ -603,40 +661,17 @@ class InterviewFilter(FilterSet):
|
||||
"candidate_id",
|
||||
"employee_id",
|
||||
"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):
|
||||
"""LinkedInAccount filter"""
|
||||
|
||||
@@ -134,6 +134,7 @@ class Recruitment(HorillaModel):
|
||||
help_text=_(
|
||||
"To close the recruitment, If closed then not visible on pipeline view."
|
||||
),
|
||||
verbose_name=_("Closed"),
|
||||
)
|
||||
is_published = models.BooleanField(
|
||||
default=True,
|
||||
@@ -143,13 +144,6 @@ class Recruitment(HorillaModel):
|
||||
),
|
||||
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(
|
||||
JobPosition,
|
||||
related_name="open_positions",
|
||||
@@ -178,8 +172,10 @@ class Recruitment(HorillaModel):
|
||||
blank=True,
|
||||
verbose_name=_("Company"),
|
||||
)
|
||||
start_date = models.DateField(default=django.utils.timezone.now)
|
||||
end_date = models.DateField(blank=True, null=True)
|
||||
start_date = models.DateField(
|
||||
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"))
|
||||
linkedin_account_id = models.ForeignKey(
|
||||
"recruitment.LinkedInAccount",
|
||||
@@ -335,6 +331,9 @@ class Stage(HorillaModel):
|
||||
verbose_name = _("Stage")
|
||||
verbose_name_plural = _("Stages")
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.stage} - ({self.recruitment_id.title})"
|
||||
|
||||
def active_candidates(self):
|
||||
"""
|
||||
This method is used to get all the active candidate like related objects
|
||||
@@ -472,6 +471,7 @@ class Candidate(HorillaModel):
|
||||
choices=offer_letter_statuses,
|
||||
default="not_sent",
|
||||
editable=False,
|
||||
verbose_name=_("Offer Letter Status"),
|
||||
)
|
||||
objects = HorillaCompanyManager(related_company_field="recruitment_id__company_id")
|
||||
last_updated = models.DateField(null=True, auto_now=True)
|
||||
|
||||
@@ -104,11 +104,11 @@ x-data="{searchShow: false}"
|
||||
style="display: none"
|
||||
>
|
||||
<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="col-sm-12 col-md-12 col-lg-6">
|
||||
<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 class="col-sm-12 col-md-12 col-lg-6">
|
||||
|
||||
@@ -1,205 +1,252 @@
|
||||
{% load static %} {% load i18n %}
|
||||
<div class="oh-modal__dialog-header">
|
||||
<h2 class="oh-modal__dialog-title" id="candidateExportLavel">
|
||||
{% trans "Export Candidates" %}
|
||||
</h2>
|
||||
<button class="oh-modal__close" aria-label="Close">
|
||||
<ion-icon name="close-outline"></ion-icon>
|
||||
</button>
|
||||
<h2 class="oh-modal__dialog-title" id="candidateExportLavel">
|
||||
{% trans "Export Candidates" %}
|
||||
</h2>
|
||||
<button class="oh-modal__close" aria-label="Close">
|
||||
<ion-icon name="close-outline"></ion-icon>
|
||||
</button>
|
||||
</div>
|
||||
<div class="oh-modal__dialog-body">
|
||||
<form
|
||||
action="{%url 'candidate-info-export' %}"
|
||||
method="get"
|
||||
class="oh-profile-section"
|
||||
onsubmit="event.stopPropagation();$(this).parents().find('.oh-modal--show').last().toggleClass('oh-modal--show');"
|
||||
id="candidateExportForm"
|
||||
>
|
||||
{% csrf_token %}
|
||||
<div class="oh-dropdown__filter-body" id="export_attendance_form">
|
||||
<div class="oh-accordion">
|
||||
<div class="oh-accordion-header">{% trans "Excel columns" %}</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">
|
||||
<input type="checkbox" id="select-all-fields" /> {% trans "Select All" %}
|
||||
</label>
|
||||
</div>
|
||||
<form action="{%url 'candidate-info-export' %}" method="get" class="oh-profile-section"
|
||||
onsubmit="event.stopPropagation();$(this).parents().find('.oh-modal--show').last().toggleClass('oh-modal--show');"
|
||||
id="candidateExportForm">
|
||||
{% csrf_token %}
|
||||
<div class="oh-dropdown__filter-body" id="">
|
||||
<div class="oh-accordion">
|
||||
<div class="oh-accordion-header">{% trans "Excel columns" %}</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">
|
||||
<input type="checkbox" id="select-all-fields" /> {% trans "Select All" %}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
{% 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 class="row">
|
||||
{% 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 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"
|
||||
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>
|
||||
{% 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 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>
|
||||
{{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 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>
|
||||
</div>
|
||||
</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>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -2,169 +2,200 @@
|
||||
{% load static %}
|
||||
<input type="hidden" name="search" id="filterSearch" />
|
||||
<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-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans 'Phone' %}</label>
|
||||
{{ f.form.mobile }}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans 'Interview Date' %}</label>
|
||||
{{ f.form.interview_date }}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans 'Country' %}</label>
|
||||
<select name="country" class="oh-select-2 w-100 country" id="country">
|
||||
</select>
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans 'Is Hired' %}?</label>
|
||||
{{ f.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">{% trans "Reject Reason" %}</label>
|
||||
{{f.form.rejected_candidate__reject_reason_id}}
|
||||
<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-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label" for="{{f.form.mobile.id_for_label}}">{{f.form.mobile.label}}</label>
|
||||
{{ f.form.mobile }}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label"
|
||||
for="{{f.form.interview_date.id_for_label}}">{{f.form.interview_date.label}}</label>
|
||||
{{ f.form.interview_date }}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label" for="country">{{f.form.country.label}}</label>
|
||||
<select name="country" class="oh-select-2 w-100 country" id="country">
|
||||
</select>
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label" for="{{f.form.hired.id_for_label}}">{{f.form.hired.label}} ?</label>
|
||||
{{ f.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="{{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 class="oh-input-group">
|
||||
<label class="oh-label">{% trans 'Is Converted' %}?</label>
|
||||
{{ f.form.converted }}
|
||||
</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="{{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 class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans 'Email' %}</label>
|
||||
{{ f.form.email }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans 'Gender' %}</label>
|
||||
{{ f.form.gender }}
|
||||
</div>
|
||||
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans 'State' %}</label>
|
||||
<select name="state" class="oh-select-2 w-100 country" id="state">
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans 'Is Canceled' %}?</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">{% trans "Offer Status" %}</label>
|
||||
{{f.form.offer_letter_status}}
|
||||
<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="{{f.form.scheduled_from.id_for_label}}">{{f.form.scheduled_from.label}} </label>
|
||||
{{ f.form.scheduled_from }}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label" for="{{f.form.is_active.id_for_label}}">{{f.form.is_active.label}}
|
||||
?</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"
|
||||
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 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 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>
|
||||
|
||||
<script src="{% static '/base/filter.js' %}"></script>
|
||||
<script>
|
||||
{% include "country.js" %}
|
||||
</script>
|
||||
{% include "country.js" %}
|
||||
</script>
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
{% 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?' %}"
|
||||
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()">
|
||||
<ion-icon name="close-outline"></ion-icon>
|
||||
</a>
|
||||
|
||||
@@ -1,155 +1,133 @@
|
||||
{% load i18n %}{% load static recruitmentfilters %}
|
||||
<section
|
||||
class="oh-wrapper oh-main__topbar"
|
||||
x-data="{searchShow: false}"
|
||||
>
|
||||
<div class="oh-main__titlebar oh-main__titlebar--left">
|
||||
<h1 class="oh-main__titlebar-title fw-bold">
|
||||
{% trans "Scheduled Interviews" %}
|
||||
</h1>
|
||||
</div>
|
||||
<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">
|
||||
<section class="oh-wrapper oh-main__topbar" x-data="{searchShow: false}">
|
||||
<div class="oh-main__titlebar oh-main__titlebar--left">
|
||||
<h1 class="oh-main__titlebar-title fw-bold">
|
||||
{% trans "Scheduled Interviews" %}
|
||||
</h1>
|
||||
</div>
|
||||
<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-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>
|
||||
<input
|
||||
name="search" type="text" placeholder="Search"
|
||||
style="margin-right:10px" class="oh-input oh-input__icon mr-3"
|
||||
autocomplete="false"
|
||||
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 class="oh-main__titlebar-button-container">
|
||||
<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>
|
||||
<input name="search" type="text" placeholder="Search" style="margin-right:10px"
|
||||
class="oh-input oh-input__icon mr-3" autocomplete="false" 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.start_date.id_for_label}}">{% trans "Interview Date From" %}</label>
|
||||
{{f.form.scheduled_from}}
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label" for="{{f.form.candidate_id.id_for_label}}">
|
||||
{{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="col-sm-12 col-md-12 col-lg-6">
|
||||
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label" for ="{{f.form.action.id_for_label}}">{% trans "Interviewer" %}</label>
|
||||
{{f.form.employee_id}}
|
||||
<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 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 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>
|
||||
</form>
|
||||
</section>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
function candidateFilter(element) {
|
||||
var search = $("#candidate-search").val();
|
||||
const form = document.querySelector("#filterForm");
|
||||
const formData = new FormData(form);
|
||||
const queryString = new URLSearchParams(formData).toString();
|
||||
const searchParams = new URLSearchParams(queryString);
|
||||
const queryObject = Object.fromEntries(searchParams.entries());
|
||||
view = $(element).attr("data-view");
|
||||
queryObject["search"] = search;
|
||||
queryObject["view"] = view;
|
||||
stringQueyObject = JSON.stringify(queryObject);
|
||||
// $('#list').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;
|
||||
$(document).ready(function () {
|
||||
function candidateFilter(element) {
|
||||
var search = $("#candidate-search").val();
|
||||
const form = document.querySelector("#filterForm");
|
||||
const formData = new FormData(form);
|
||||
const queryString = new URLSearchParams(formData).toString();
|
||||
const searchParams = new URLSearchParams(queryString);
|
||||
const queryObject = Object.fromEntries(searchParams.entries());
|
||||
view = $(element).attr("data-view");
|
||||
queryObject["search"] = search;
|
||||
queryObject["view"] = view;
|
||||
stringQueyObject = JSON.stringify(queryObject);
|
||||
// $('#list').attr('hx-vals', stringQueyObject);
|
||||
// $('#card').attr('hx-vals', stringQueyObject);
|
||||
}
|
||||
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");
|
||||
}
|
||||
|
||||
$("#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}"}`);
|
||||
$("#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 src="{% static '/candidate/bulk.js' %}"></script>
|
||||
|
||||
@@ -9,72 +9,42 @@
|
||||
</form>
|
||||
<script>
|
||||
$("#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(){
|
||||
var candidate_id = $('[name=candidate_id]').val();
|
||||
var selectedmanagers = $('[name=employee_id]').val();
|
||||
function fetchManagers(candidateId, selected = null) {
|
||||
if (!candidateId) return;
|
||||
|
||||
// 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
|
||||
}));
|
||||
$.ajax({
|
||||
url: '{% url "get_managers" %}',
|
||||
method: "GET",
|
||||
data: { cand_id: candidateId },
|
||||
success: function (data) {
|
||||
$managerSelect.empty();
|
||||
$.each(data.employees, function (key, value) {
|
||||
$managerSelect.append(
|
||||
$("<option>", {
|
||||
value: key,
|
||||
text: value,
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
if (selected) {
|
||||
$managerSelect.val(selected);
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
// Set the selected Managers back to the dropdown
|
||||
if (selectedmanagers) {
|
||||
$('[name=employee_id]').val(selectedmanagers);
|
||||
}
|
||||
}
|
||||
});
|
||||
// Initial load
|
||||
fetchManagers($candidateSelect.val(), selectedManagers);
|
||||
|
||||
})
|
||||
|
||||
$('[name=candidate_id]').change(function(){
|
||||
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);
|
||||
}
|
||||
}
|
||||
// On candidate change
|
||||
$candidateSelect.on("change", function () {
|
||||
fetchManagers(this.value, $managerSelect.val());
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
@@ -1,73 +1,69 @@
|
||||
{% load i18n %}{% load static %}
|
||||
<div class="oh-dropdown__filter-body">
|
||||
<div class="oh-dropdown__filter-body">
|
||||
<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 "Managers" %}</label>
|
||||
{{f.form.recruitment_managers}}
|
||||
</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>
|
||||
{% comment %} {{f.form.closed}} {% endcomment %}
|
||||
<select name="closed" id="closed" class="oh-select oh-select-2 w-100">
|
||||
<option value="unknown">{% trans "Unknown" %}</option>
|
||||
<option value="true">{% trans "True" %}</option>
|
||||
<option value="false" selected>{% trans "False" %}</option>
|
||||
</select>
|
||||
</div>
|
||||
<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_managers.id_for_label}}">{{f.form.recruitment_managers.label}}</label>
|
||||
{{f.form.recruitment_managers}}
|
||||
</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 class="oh-input-group">
|
||||
<label class="oh-label" for="{{f.form.closed.id_for_label}}">{{f.form.closed.label}}</label>
|
||||
{% comment %} {{f.form.closed}} {% endcomment %}
|
||||
{{f.form.closed}}
|
||||
</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.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 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 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 "Start Date From" %}</label>
|
||||
{{f.form.start_from}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Is Active" %}?</label>
|
||||
{{f.form.is_active}}
|
||||
</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="{{f.form.start_from.id_for_label}}"> {{f.form.start_from.label}}</label>
|
||||
{{f.form.start_from}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label" for="{{f.form.is_active.id_for_label}}">{{f.form.is_active.label}} ?</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" for="{{f.form.end_till.id_for_label}}">{{f.form.end_till.label}}</label>
|
||||
{{f.form.end_till}}
|
||||
</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 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>
|
||||
</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>
|
||||
<input type="text" class="oh-input oh-input__icon" aria-label="Search Input"
|
||||
placeholder="{% trans 'Search' %}" name="search" hx-get="{% url 'skill-zone-filter' %}"
|
||||
onkeyup="$('.filterButton').click()"
|
||||
/>
|
||||
onkeyup="$('.filterButton').click()" />
|
||||
</div>
|
||||
|
||||
<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>
|
||||
</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-accordion">
|
||||
<div class="oh-accordion-header">{% trans "Candidate Filter" %}</div>
|
||||
@@ -36,84 +36,92 @@
|
||||
<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>
|
||||
<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}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Candidates" %}</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">{% trans "Job Position" %}</label>
|
||||
<label class="oh-label"
|
||||
for="{{f.form.candidate_id__job_position_id.id_for_label}}">{{f.form.candidate_id__job_position_id.label}}</label>
|
||||
{{f.form.candidate_id__job_position_id}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6 mb-2">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Joining From" %}</label>
|
||||
{{f.form.scheduled_from}}
|
||||
<label class="oh-label"
|
||||
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 class="col-sm-12 col-md-12 col-lg-6">
|
||||
<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}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<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}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<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}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<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}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<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}}
|
||||
</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 "Reject Reason" %}</label>
|
||||
{{f.form.candidate_id__rejected_candidate__reject_reason_id}}
|
||||
</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>
|
||||
<label class="oh-label"
|
||||
for="{{f.form.candidate_id__offer_letter_status.id_for_label}}">{{f.form.candidate_id__offer_letter_status.label}}</label>
|
||||
{{f.form.candidate_id__offer_letter_status}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<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}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -134,8 +142,9 @@
|
||||
</form>
|
||||
|
||||
<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"
|
||||
hx-get="{% url 'skill-zone-create' %}" hx-target="#objectCreateModalTarget">
|
||||
<a class="oh-btn oh-btn--secondary oh-btn--shadow" data-toggle="oh-modal-toggle"
|
||||
data-target="#objectCreateModal" hx-get="{% url 'skill-zone-create' %}"
|
||||
hx-target="#objectCreateModalTarget">
|
||||
<ion-icon name="add-outline" class="me-1"></ion-icon>
|
||||
{% trans "Create" %}
|
||||
</a>
|
||||
|
||||
@@ -1,41 +1,44 @@
|
||||
{% load i18n %}{% load static %}
|
||||
<div class="oh-dropdown__filter-body">
|
||||
<div class="oh-dropdown__filter-body">
|
||||
<div class="oh-accordion">
|
||||
<div class="oh-accordion-header">{% trans "Stage" %}</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 Managers" %}</label>
|
||||
{{f.form.recruitment_id__recruitment_managers}}
|
||||
</div>
|
||||
<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 "Stage Type" %}</label>
|
||||
{{f.form.stage_type}}
|
||||
</div>
|
||||
<div class="oh-accordion-header">{% trans "Stage" %}</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__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.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.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 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 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>
|
||||
<script src="{% static '/base/filter.js' %}"></script>
|
||||
<script src="{% static '/base/filter.js' %}"></script>
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
></ion-icon>
|
||||
</span>
|
||||
</button>
|
||||
<span class="oh-permission-table__user">{{stage}}</span>
|
||||
<span class="oh-permission-table__user">{{stage.stage}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<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)
|
||||
messages.success(request, "Interviewer removed succesfully.")
|
||||
interview.save()
|
||||
return redirect(interview_filter_view)
|
||||
return HttpResponse("<script>$('.filterButton')[0].click()</script>")
|
||||
|
||||
|
||||
@login_required
|
||||
@@ -2620,7 +2620,9 @@ def open_recruitments(request):
|
||||
"""
|
||||
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 = {
|
||||
"recruitments": recruitments,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user