"""Filters from application News""" from django_filters import rest_framework as filters from django.utils.translation import gettext_lazy as _ from news import models class NewsListFilterSet(filters.FilterSet): """FilterSet for News list""" is_highlighted = filters.BooleanFilter() title = filters.CharFilter(method='by_title') tag_group = filters.ChoiceFilter( choices=( (models.News.RECIPES_TAG_VALUE, _('Recipes')), ), method='by_tag_group' ) class Meta: """Meta class""" model = models.News fields = ( 'title', 'is_highlighted', 'tag_group', ) def by_tag_group(self, queryset, name, value): if value == models.News.RECIPES_TAG_VALUE: queryset = queryset.recipe_news() return queryset def by_title(self, queryset, name, value): """Crappy search by title according to locale""" if value: locale = self.request.locale filters = {f'{name}__{locale}__icontains': value} return queryset.filter(**filters) else: return queryset