55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
"""Establishment app filters."""
|
|
from django.core.validators import EMPTY_VALUES
|
|
from django_filters import rest_framework as filters
|
|
from establishment import models
|
|
|
|
|
|
class EstablishmentFilter(filters.FilterSet):
|
|
"""Establishment filter set."""
|
|
|
|
tag_id = filters.NumberFilter(field_name='tags__metadata__id',)
|
|
award_id = filters.NumberFilter(field_name='awards__id',)
|
|
search = filters.CharFilter(method='search_text')
|
|
est_type = filters.ChoiceFilter(choices=models.EstablishmentType.INDEX_NAME_TYPES,
|
|
method='by_type')
|
|
est_subtype = filters.ChoiceFilter(choices=models.EstablishmentSubType.INDEX_NAME_TYPES,
|
|
method='by_subtype')
|
|
|
|
class Meta:
|
|
"""Meta class."""
|
|
|
|
model = models.Establishment
|
|
fields = (
|
|
'tag_id',
|
|
'award_id',
|
|
'search',
|
|
'est_type',
|
|
'est_subtype',
|
|
)
|
|
|
|
def search_text(self, queryset, name, value):
|
|
"""Search text."""
|
|
if value not in EMPTY_VALUES:
|
|
return queryset.search(value, locale=self.request.locale)
|
|
return queryset
|
|
|
|
def by_type(self, queryset, name, value):
|
|
return queryset.by_type(value)
|
|
|
|
def by_subtype(self, queryset, name, value):
|
|
return queryset.by_subtype(value)
|
|
|
|
|
|
class EstablishmentTypeTagFilter(filters.FilterSet):
|
|
"""Establishment tag filter set."""
|
|
|
|
type_id = filters.NumberFilter(field_name='id')
|
|
|
|
class Meta:
|
|
"""Meta class."""
|
|
|
|
model = models.EstablishmentType
|
|
fields = (
|
|
'type_id',
|
|
)
|