gault-millau/apps/main/filters.py
2020-02-07 12:58:38 +03:00

60 lines
1.7 KiB
Python

from django.core.validators import EMPTY_VALUES
from django_filters import rest_framework as filters
from main import models
class AwardFilter(filters.FilterSet):
"""Award filter set."""
establishment_id = filters.NumberFilter(field_name='object_id', )
product_id = filters.NumberFilter(field_name='object_id', )
employee_id = filters.NumberFilter(field_name='object_id', )
class Meta:
"""Meta class."""
model = models.Award
fields = (
'establishment_id',
'product_id',
'employee_id',
'state',
'award_type',
'vintage_year',
)
def by_establishment_id(self, queryset, name, value):
if value not in EMPTY_VALUES:
return queryset.by_establishment_id(value, content_type='establishment')
return queryset
def by_product_id(self, queryset, name, value):
if value not in EMPTY_VALUES:
return queryset.by_product_id(value, content_type='product')
return queryset
def by_employee_id(self, queryset, name, value):
if value not in EMPTY_VALUES:
return queryset.by_employee_id(value, content_type='establishmentemployee')
return queryset
class AwardTypeFilterSet(filters.FilterSet):
"""Award type FilterSet."""
id = filters.NumberFilter(help_text='Filter by AwardType identifier.')
name = filters.CharFilter(method='by_name', help_text='Filter by AwardType name.')
class Meta:
"""Meta class."""
model = models.AwardType
fields = [
'id',
'name',
]
def by_name(self, queryset, name, value):
if value not in EMPTY_VALUES:
return queryset.by_name(value)
return queryset