multiply filters for employee
This commit is contained in:
parent
a6f3384126
commit
e5faa90c76
|
|
@ -1,7 +1,8 @@
|
|||
"""Establishment app filters."""
|
||||
from django.core.validators import EMPTY_VALUES
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django_filters import rest_framework as filters
|
||||
from django_filters import rest_framework as filters, Filter
|
||||
from django_filters.fields import Lookup
|
||||
from rest_framework.serializers import ValidationError
|
||||
|
||||
from establishment import models
|
||||
|
|
@ -63,13 +64,19 @@ class EstablishmentTypeTagFilter(filters.FilterSet):
|
|||
)
|
||||
|
||||
|
||||
class ListFilter(Filter):
|
||||
def filter(self, qs, value):
|
||||
value_list = value.split(u',')
|
||||
return super().filter(qs, Lookup(value_list, 'in'))
|
||||
|
||||
|
||||
class EmployeeBackFilter(filters.FilterSet):
|
||||
"""Employee filter set."""
|
||||
|
||||
search = filters.CharFilter(method='search_by_name_or_last_name')
|
||||
position_id = filters.NumberFilter(method='search_by_actual_position_id')
|
||||
public_mark = filters.NumberFilter(method='search_by_public_mark')
|
||||
toque_number = filters.NumberFilter(method='search_by_toque_number')
|
||||
position_id = filters.CharFilter(method='search_by_actual_position_id')
|
||||
public_mark = filters.CharFilter(method='search_by_public_mark')
|
||||
toque_number = filters.CharFilter(method='search_by_toque_number')
|
||||
username = filters.CharFilter(method='search_by_username_or_name')
|
||||
|
||||
class Meta:
|
||||
|
|
@ -93,19 +100,22 @@ class EmployeeBackFilter(filters.FilterSet):
|
|||
def search_by_actual_position_id(self, queryset, name, value):
|
||||
"""Search by actual position_id."""
|
||||
if value not in EMPTY_VALUES:
|
||||
return queryset.search_by_position_id(value)
|
||||
value_list = [int(val) for val in value.split(',')]
|
||||
return queryset.search_by_position_id(value_list)
|
||||
return queryset
|
||||
|
||||
def search_by_public_mark(self, queryset, name, value):
|
||||
"""Search by establishment public_mark."""
|
||||
if value not in EMPTY_VALUES:
|
||||
return queryset.search_by_public_mark(value)
|
||||
value_list = [int(val) for val in value.split(',')]
|
||||
return queryset.search_by_public_mark(value_list)
|
||||
return queryset
|
||||
|
||||
def search_by_toque_number(self, queryset, name, value):
|
||||
"""Search by establishment toque_number."""
|
||||
if value not in EMPTY_VALUES:
|
||||
return queryset.search_by_toque_number(value)
|
||||
value_list = [int(val) for val in value.split(',')]
|
||||
return queryset.search_by_toque_number(value_list)
|
||||
return queryset
|
||||
|
||||
def search_by_username_or_name(self, queryset, name, value):
|
||||
|
|
|
|||
|
|
@ -1034,22 +1034,22 @@ class EmployeeQuerySet(models.QuerySet):
|
|||
Q(establishmentemployee__to_date__isnull=True)
|
||||
)
|
||||
|
||||
def search_by_position_id(self, value):
|
||||
def search_by_position_id(self, value_list):
|
||||
"""Search by position_id."""
|
||||
return self.filter(
|
||||
Q(establishmentemployee__position_id=value),
|
||||
return self.search_by_actual_employee().filter(
|
||||
Q(establishmentemployee__position_id__in=value_list),
|
||||
)
|
||||
|
||||
def search_by_public_mark(self, value):
|
||||
def search_by_public_mark(self, value_list):
|
||||
"""Search by establishment public_mark."""
|
||||
return self.filter(
|
||||
Q(establishmentemployee__establishment__public_mark=value),
|
||||
return self.search_by_actual_employee().filter(
|
||||
Q(establishmentemployee__establishment__public_mark__in=value_list),
|
||||
)
|
||||
|
||||
def search_by_toque_number(self, value):
|
||||
def search_by_toque_number(self, value_list):
|
||||
"""Search by establishment toque_number."""
|
||||
return self.filter(
|
||||
Q(establishmentemployee__establishment__toque_number=value),
|
||||
return self.search_by_actual_employee().filter(
|
||||
Q(establishmentemployee__establishment__toque_number__in=value_list),
|
||||
)
|
||||
|
||||
def search_by_username_or_name(self, value):
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ class EmployeeListCreateView(generics.ListCreateAPIView):
|
|||
permission_classes = (permissions.AllowAny,)
|
||||
filter_class = filters.EmployeeBackFilter
|
||||
serializer_class = serializers.EmployeeBackSerializers
|
||||
queryset = models.Employee.objects.all().with_back_office_related()
|
||||
queryset = models.Employee.objects.all().distinct().with_back_office_related()
|
||||
|
||||
|
||||
class EmployeesListSearchViews(generics.ListAPIView):
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user