aircox/aircox/filters.py
2022-02-22 18:48:17 +01:00

33 lines
880 B
Python

from django.utils.translation import gettext_lazy as _
import django_filters as filters
from .models import Page, Episode
class PageFilters(filters.FilterSet):
q = filters.CharFilter(method='search_filter', label=_('Search'))
class Meta:
model = Page
fields = {
'category__id': ['in'],
'pub_date': ['exact', 'gte', 'lte'],
}
def search_filter(self, queryset, name, value):
return queryset.search(value)
class EpisodeFilters(PageFilters):
podcast = filters.BooleanFilter(method='podcast_filter', label=_('Podcast'))
class Meta:
model = Episode
fields = PageFilters.Meta.fields.copy()
def podcast_filter(self, queryset, name, value):
if value:
return queryset.filter(sound__is_public=True).distinct()
return queryset.filter(sound__isnull=True)