# SPDX-FileCopyrightText: 2024 Thomas Breitner <t.breitner@csl.mpg.de>
#
# SPDX-License-Identifier: EUPL-1.2
from django import forms
import django_filters
# from eucrim.core.widgets import DropdownLinkWidget
from eucrim.core.models.categories import (
CategoryRegion,
CategoryAreasCrime,
CategoryFoundation,
CategoryCooperation,
CategoryInstitution,
CategoryProceduralCriminalLaw,
)
from .models import NewsPage
# Reference:
# https://github.com/carltongibson/django-filter/pull/134#issuecomment-284067570
# http://stackoverflow.com/questions/43916673
# class LanguageWidget(DropdownLinkWidget):
# label = 'Language'
# right = True
#
#
# class NewsTypeWidget(DropdownLinkWidget):
# label = 'Type'
# right = True
#
#
# class RegionWidget(DropdownLinkWidget):
# label = 'Region'
# right = False
#
#
# class FoundationWidget(DropdownLinkWidget):
# label = 'Foundation'
# right = False
#
#
# class InstitutionWidget(DropdownLinkWidget):
# label = 'Institution'
# right = False
#
#
# class CooperationWidget(DropdownLinkWidget):
# label = 'Cooperation'
# right = False
#
#
# class ProceduralWidget(DropdownLinkWidget):
# label = 'Procedural Criminal Law'
# right = False
#
#
# class AreaCrimeWidget(DropdownLinkWidget):
# label = 'Specific Areas of Crime'
# right = False
[docs]
class NewsFilter(django_filters.FilterSet):
# news_type = django_filters.ChoiceFilter(
# choices=NewsPage.NEWS_TYPE_CHOICES,
# widget=NewsTypeWidget,
# )
# language = django_filters.ChoiceFilter(
# choices=NewsPage.LANGUAGE_CHOICES,
# widget=LanguageWidget,
# )
# categories_institution = django_filters.AllValuesFilter(
# name="categories_institution__title",
# widget=InstitutionWidget,
# )
# categories_region = django_filters.AllValuesFilter(
# name="categories_region__title",
# widget=RegionWidget,
# )
# categories_foundation = django_filters.AllValuesFilter(
# name="categories_foundation__title",
# widget=FoundationWidget,
# )
# categories_cooperation = django_filters.AllValuesFilter(
# name="categories_cooperation__title",
# widget=CooperationWidget,
# )
# categories_areacrime = django_filters.AllValuesFilter(
# name="categories_areacrime__title",
# widget=AreaCrimeWidget,
# )
# categories_procedural = django_filters.AllValuesFilter(
# name="categories_procedural__title",
# widget=ProceduralWidget,
# )
# categories_region = django_filters.ModelMultipleChoiceFilter(
# label="bla",
# to_field_name='slug',
# queryset=CategoryRegion.objects.all(),
# widget=LinkWidget(),
# )
is_featured_news = django_filters.BooleanFilter(
# widget=forms.CheckboxInput,
# field_name='is_featured_news',
# lookup_expr='isnull',
)
news_type = django_filters.MultipleChoiceFilter(
choices=NewsPage.NEWS_TYPE_CHOICES,
widget=forms.CheckboxSelectMultiple,
)
# language = django_filters.MultipleChoiceFilter(
# choices=NewsPage.LANGUAGE_CHOICES,
# widget=forms.CheckboxSelectMultiple,
# )
categories_region = django_filters.ModelMultipleChoiceFilter(
queryset=CategoryRegion.objects.all(),
widget=forms.CheckboxSelectMultiple,
)
categories_institution = django_filters.ModelMultipleChoiceFilter(
queryset=CategoryInstitution.objects.all(),
widget=forms.CheckboxSelectMultiple,
)
categories_foundation = django_filters.ModelMultipleChoiceFilter(
queryset=CategoryFoundation.objects.all(),
widget=forms.CheckboxSelectMultiple,
)
categories_cooperation = django_filters.ModelMultipleChoiceFilter(
queryset=CategoryCooperation.objects.all(),
widget=forms.CheckboxSelectMultiple,
)
categories_areacrime = django_filters.ModelMultipleChoiceFilter(
queryset=CategoryAreasCrime.objects.all(),
widget=forms.CheckboxSelectMultiple,
)
categories_procedural = django_filters.ModelMultipleChoiceFilter(
queryset=CategoryProceduralCriminalLaw.objects.all(),
widget=forms.CheckboxSelectMultiple,
)