* Added pre commit hook * Run pre commit hook on all files --------- Co-authored-by: Horilla <131998600+horilla-opensource@users.noreply.github.com>
152 lines
4.2 KiB
Python
152 lines
4.2 KiB
Python
"""
|
|
offboarding/filters.py
|
|
|
|
This module is used to register django_filters
|
|
"""
|
|
|
|
import uuid
|
|
|
|
import django_filters
|
|
from django import forms
|
|
|
|
from base.filters import FilterSet
|
|
from offboarding.models import (
|
|
Offboarding,
|
|
OffboardingEmployee,
|
|
OffboardingStage,
|
|
ResignationLetter,
|
|
)
|
|
|
|
|
|
class LetterFilter(FilterSet):
|
|
"""
|
|
LetterFilter class
|
|
"""
|
|
|
|
search = django_filters.CharFilter(field_name="title", lookup_expr="icontains")
|
|
planned_to_leave_on = django_filters.DateFilter(
|
|
field_name="planned_to_leave_on",
|
|
widget=forms.DateInput(attrs={"type": "date"}),
|
|
)
|
|
|
|
class Meta:
|
|
model = ResignationLetter
|
|
fields = [
|
|
"status",
|
|
"employee_id",
|
|
"planned_to_leave_on",
|
|
"employee_id__employee_work_info__department_id",
|
|
"employee_id__employee_work_info__job_position_id",
|
|
"employee_id__employee_work_info__reporting_manager_id",
|
|
]
|
|
|
|
|
|
class PipelineFilter(FilterSet):
|
|
"""
|
|
PipelineFilter
|
|
"""
|
|
|
|
search = django_filters.CharFilter(method="search_method", lookup_expr="icontains")
|
|
|
|
class Meta:
|
|
model = Offboarding
|
|
fields = "__all__"
|
|
|
|
def search_method(self, queryset, _, value):
|
|
"""
|
|
This method is used to add custom search condition
|
|
"""
|
|
return (
|
|
queryset.filter(title__icontains=value)
|
|
| queryset.filter(offboardingstage__title__icontains=value)
|
|
| queryset.filter(
|
|
offboardingstage__offboardingemployee__employee_id__employee_first_name__icontains=value
|
|
)
|
|
).distinct()
|
|
|
|
|
|
class PipelineStageFilter(FilterSet):
|
|
"""
|
|
PipelineStageFilter
|
|
"""
|
|
|
|
search = django_filters.CharFilter(method="search_method", lookup_expr="icontains")
|
|
|
|
class Meta:
|
|
model = OffboardingStage
|
|
fields = "__all__"
|
|
exclude = [
|
|
"sequence",
|
|
]
|
|
|
|
def search_method(self, queryset, _, value):
|
|
"""
|
|
This method is used to add custom search condition
|
|
"""
|
|
|
|
return (
|
|
queryset.filter(title__icontains=value)
|
|
| queryset.filter(
|
|
offboardingemployee__employee_id__employee_first_name__icontains=value
|
|
)
|
|
| queryset.filter(offboarding_id__title__icontains=value)
|
|
).distinct()
|
|
|
|
|
|
class PipelineEmployeeFilter(FilterSet):
|
|
"""
|
|
PipelineEmployeeFilter
|
|
"""
|
|
|
|
search = django_filters.CharFilter(method="search_method", lookup_expr="icontains")
|
|
|
|
notice_period_starts = django_filters.DateFilter(
|
|
field_name="notice_period_starts",
|
|
lookup_expr="gte",
|
|
widget=forms.DateInput(attrs={"type": "date"}),
|
|
)
|
|
notice_period_ends = django_filters.DateFilter(
|
|
field_name="notice_period_ends",
|
|
lookup_expr="lte",
|
|
widget=forms.DateInput(attrs={"type": "date"}),
|
|
)
|
|
|
|
class Meta:
|
|
model = OffboardingEmployee
|
|
fields = [
|
|
"stage_id",
|
|
"employee_id__gender",
|
|
"employee_id__employee_work_info__department_id",
|
|
"employee_id__employee_work_info__job_position_id",
|
|
"employee_id__employee_work_info__job_role_id",
|
|
"employee_id__employee_work_info__employee_type_id",
|
|
"employee_id__employee_work_info__shift_id",
|
|
"employee_id__employee_work_info__work_type_id",
|
|
]
|
|
|
|
def search_method(self, queryset, _, value):
|
|
"""
|
|
This method is used to add custom search condition
|
|
"""
|
|
return (
|
|
queryset.filter(employee_id__employee_first_name__icontains=value)
|
|
| queryset.filter(stage_id__title__icontains=value)
|
|
| queryset.filter(stage_id__offboarding_id__title__icontains=value)
|
|
).distinct()
|
|
|
|
|
|
class LetterReGroup(FilterSet):
|
|
"""
|
|
Class to keep the field name for group by option
|
|
"""
|
|
|
|
fields = [
|
|
("", "Select"),
|
|
("employee_id", "Employee"),
|
|
("planned_to_leave_on", "Planned to leave date"),
|
|
("status", "Status"),
|
|
("employee_id__employee_work_info__department_id", "Department"),
|
|
("employee_id__employee_work_info__job_position_id", "Job Position"),
|
|
("employee_id__employee_work_info__reporting_manager_id", "Reporting Manager"),
|
|
]
|