34 lines
1.1 KiB
Python
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 |