gault-millau/apps/account/filters.py

56 lines
1.5 KiB
Python

"""Account app filters."""
from django.core.validators import EMPTY_VALUES
from django_filters import rest_framework as filters
from account import models
class AccountBackOfficeFilter(filters.FilterSet):
"""Account filter set."""
search = filters.CharFilter(method='search_text')
role_country_code = filters.CharFilter(method='by_role_country_code')
role = filters.MultipleChoiceFilter(choices=models.Role.ROLE_CHOICES,
method='by_roles')
class Meta:
"""Meta class."""
model = models.User
fields = (
'role',
'email_confirmed',
'is_staff',
'is_active',
'is_superuser',
'search',
'role_country_code',
)
def by_roles(self, queryset, name, value):
if value not in EMPTY_VALUES:
return queryset.by_roles(value)
return queryset
def search_text(self, queryset, name, value):
if value not in EMPTY_VALUES:
return queryset.full_text_search(value)
return queryset
def by_role_country_code(self, queryset, name, value):
if value not in EMPTY_VALUES:
return queryset.by_role_country_code(value)
return queryset
class RoleListFilter(filters.FilterSet):
"""Role filter set."""
country_code = filters.CharFilter(field_name='country__code')
class Meta:
"""Meta class."""
model = models.Role
fields = [
'country_code',
]