gault-millau/apps/partner/filters.py
2020-01-28 23:21:16 +03:00

34 lines
1.1 KiB
Python

"""Partner app filters."""
from django_filters import rest_framework as filters
from partner.models import Partner
from django.core.validators import EMPTY_VALUES
class PartnerFilterSet(filters.FilterSet):
"""Establishment filter set."""
establishment = filters.NumberFilter(
help_text='Allows to get partner list by establishment ID.')
type = filters.ChoiceFilter(
choices=Partner.MODEL_TYPES,
help_text=f'Allows to filter partner list by partner type. '
f'Enum: {dict(Partner.MODEL_TYPES)}')
ordering = filters.CharFilter(method='sort_partner')
class Meta:
"""Meta class."""
model = Partner
fields = (
'establishment',
'type',
'ordering',
)
@staticmethod
def sort_partner(queryset, name, value):
if value not in EMPTY_VALUES:
if 'date_bind' in value:
value = value.replace('date_bind', 'partnertoestablishment__partner_bind_date')
queryset = queryset.order_by(value)
return queryset