60 lines
1.7 KiB
Python
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 |