193 lines
4.4 KiB
Python
193 lines
4.4 KiB
Python
"""
|
|
filters.py
|
|
|
|
This page is used to register filter for employee models
|
|
|
|
"""
|
|
|
|
import django_filters
|
|
from django import forms
|
|
from django_filters import CharFilter, DateFilter
|
|
|
|
from base.models import Tags
|
|
from helpdesk.models import FAQ, DepartmentManager, FAQCategory, Ticket, TicketType
|
|
from horilla.filters import FilterSet, HorillaFilterSet
|
|
|
|
|
|
class FAQFilter(FilterSet):
|
|
"""
|
|
Filter set class for FAQ model
|
|
|
|
Args:
|
|
FilterSet (class): custom filter set class to apply styling
|
|
"""
|
|
|
|
search = CharFilter(field_name="question", lookup_expr="icontains")
|
|
|
|
class Meta:
|
|
"""
|
|
Meta class to add the additional info
|
|
"""
|
|
|
|
model = FAQ
|
|
fields = [
|
|
"search",
|
|
"tags",
|
|
]
|
|
|
|
|
|
class FAQCategoryFilter(FilterSet):
|
|
"""
|
|
Filter set class for FAQ category model
|
|
|
|
Args:
|
|
FilterSet (class): custom filter set class to apply styling
|
|
"""
|
|
|
|
search = CharFilter(field_name="title", lookup_expr="icontains")
|
|
|
|
class Meta:
|
|
"""
|
|
Meta class to add the additional info
|
|
"""
|
|
|
|
model = FAQCategory
|
|
fields = [
|
|
"search",
|
|
]
|
|
|
|
|
|
class TicketFilter(FilterSet):
|
|
"""
|
|
Filter set class for Ticket model
|
|
|
|
Args:
|
|
FilterSet (class): custom filter set class to apply styling
|
|
"""
|
|
|
|
search = CharFilter(field_name="title", lookup_expr="icontains")
|
|
from_date = DateFilter(
|
|
field_name="deadline",
|
|
lookup_expr="gte",
|
|
widget=forms.DateInput(attrs={"type": "date"}),
|
|
)
|
|
to_date = DateFilter(
|
|
field_name="deadline",
|
|
lookup_expr="lte",
|
|
widget=forms.DateInput(attrs={"type": "date"}),
|
|
)
|
|
pipeline_status = django_filters.CharFilter(
|
|
field_name="status",
|
|
)
|
|
|
|
class Meta:
|
|
"""
|
|
Meta class to add the additional info
|
|
"""
|
|
|
|
model = Ticket
|
|
fields = [
|
|
"title",
|
|
"tags",
|
|
"employee_id",
|
|
"ticket_type",
|
|
"priority",
|
|
"deadline",
|
|
"assigned_to",
|
|
"status",
|
|
"is_active",
|
|
]
|
|
|
|
|
|
class TicketReGroup:
|
|
"""
|
|
Class to keep the field name for group by option
|
|
"""
|
|
|
|
fields = [
|
|
("", "Select"),
|
|
("employee_id", "Owner"),
|
|
("ticket_type", "Ticket Type"),
|
|
("status", "Status"),
|
|
("priority", "Priority"),
|
|
("tags", "Tags"),
|
|
("assigned_to", "Assigner"),
|
|
("employee_id__employee_work_info__company_id", "Company"),
|
|
]
|
|
|
|
|
|
class TicketTypeFilter(FilterSet):
|
|
|
|
search = CharFilter(method="search_method")
|
|
|
|
def search_method(self, queryset, _, value):
|
|
"""
|
|
This method is used to search employees and objective
|
|
"""
|
|
|
|
return (
|
|
queryset.filter(title__icontains=value)
|
|
| queryset.filter(type__icontains=value)
|
|
| queryset.filter(prefix__icontains=value)
|
|
).distinct()
|
|
|
|
class Meta:
|
|
model = TicketType
|
|
fields = ["title", "type", "prefix"]
|
|
|
|
|
|
class TagsFilter(FilterSet):
|
|
|
|
search = CharFilter(method="search_method")
|
|
|
|
def search_method(self, queryset, _, value):
|
|
"""
|
|
This method is used to search employees and objective
|
|
"""
|
|
|
|
return (queryset.filter(title__icontains=value)).distinct()
|
|
|
|
class Meta:
|
|
model = Tags
|
|
fields = [
|
|
"title",
|
|
]
|
|
|
|
|
|
class DepartmentManagerFilter(HorillaFilterSet):
|
|
|
|
search = django_filters.CharFilter(method="search_method")
|
|
search_field = django_filters.CharFilter(method="search_in")
|
|
|
|
class Meta:
|
|
model = DepartmentManager
|
|
fields = ["department", "manager"]
|
|
|
|
def search_method(self, queryset, _, value):
|
|
"""
|
|
This method is used to search employees and objective
|
|
"""
|
|
|
|
return (
|
|
(queryset.filter(department__department__icontains=value))
|
|
| queryset.filter(manager__employee_first_name__icontains=value)
|
|
).distinct()
|
|
|
|
|
|
class FaqSearch(FilterSet):
|
|
search = CharFilter(method="search_method", lookup_expr="icontains")
|
|
|
|
class Meta:
|
|
model = FAQ
|
|
fields = ["search"]
|
|
|
|
def search_method(self, queryset, _, value):
|
|
"""
|
|
This method is used to add custom search condition
|
|
"""
|
|
return (
|
|
queryset.filter(question__icontains=value)
|
|
| queryset.filter(answer__icontains=value)
|
|
| queryset.filter(tags__title__icontains=value)
|
|
).distinct()
|