Coverage for vocabs/filters.py: 80%
35 statements
« prev ^ index » next coverage.py v7.6.0, created at 2024-07-27 11:19 +0000
« prev ^ index » next coverage.py v7.6.0, created at 2024-07-27 11:19 +0000
1import django_filters
2from dal import autocomplete
3from .models import SkosConcept, SkosConceptScheme, get_all_children, SkosLabel
6django_filters.filters.LOOKUP_TYPES = [
7 ("", "---------"),
8 ("exact", "Is equal to"),
9 ("iexact", "Is equal to (case insensitive)"),
10 ("not_exact", "Is not equal to"),
11 ("lt", "Lesser than/before"),
12 ("gt", "Greater than/after"),
13 ("gte", "Greater than or equal to"),
14 ("lte", "Lesser than or equal to"),
15 ("startswith", "Starts with"),
16 ("endswith", "Ends with"),
17 ("contains", "Contains"),
18 ("icontains", "Contains (case insensitive)"),
19 ("not_contains", "Does not contain"),
20]
23def generous_concept_filter(queryset, name, value):
24 """call this function through "method=generous_concept_filter" """
25 if value:
26 lookup = "__".join([name, "in"])
27 starter = value[0]
28 all = get_all_children(starter, include_self=True)
29 qs = queryset.filter(**{lookup: all})
30 return qs
31 return queryset
34class SkosConceptListFilter(django_filters.FilterSet):
36 pref_label = django_filters.ModelMultipleChoiceFilter(
37 widget=autocomplete.Select2Multiple(url="vocabs-ac:skosconcept-autocomplete"),
38 queryset=SkosConcept.objects.all(),
39 lookup_expr="icontains",
40 label="PrefLabel",
41 help_text=False,
42 )
44 scheme = django_filters.ModelMultipleChoiceFilter(
45 queryset=SkosConceptScheme.objects.all(),
46 lookup_expr="icontains",
47 label="in SkosConceptScheme",
48 help_text=False,
49 )
51 class Meta:
52 model = SkosConcept
53 fields = "__all__"
56class SkosConceptFilter(django_filters.FilterSet):
58 pref_label = django_filters.ModelMultipleChoiceFilter(
59 widget=autocomplete.Select2Multiple(url="vocabs-ac:skosconcept-autocomplete"),
60 queryset=SkosConcept.objects.all(),
61 lookup_expr="icontains",
62 label="PrefLabel",
63 help_text=False,
64 )
66 scheme = django_filters.ModelMultipleChoiceFilter(
67 queryset=SkosConceptScheme.objects.all(),
68 lookup_expr="icontains",
69 label="in SkosConceptScheme",
70 help_text=False,
71 )
73 class Meta:
74 model = SkosConcept
75 fields = "__all__"
78class SkosConceptSchemeListFilter(django_filters.FilterSet):
80 dc_title = django_filters.CharFilter(
81 lookup_expr="icontains",
82 help_text=SkosConceptScheme._meta.get_field("dc_title").help_text,
83 label=SkosConceptScheme._meta.get_field("dc_title").verbose_name,
84 )
85 dct_creator = django_filters.CharFilter(
86 lookup_expr="icontains",
87 help_text=SkosConceptScheme._meta.get_field("dct_creator").help_text,
88 label=SkosConceptScheme._meta.get_field("dct_creator").verbose_name,
89 )
91 class Meta:
92 model = SkosConceptScheme
93 fields = "__all__"
96class SkosLabelListFilter(django_filters.FilterSet):
98 label = django_filters.CharFilter(
99 lookup_expr="icontains",
100 help_text=SkosLabel._meta.get_field("label").help_text,
101 label=SkosLabel._meta.get_field("label").verbose_name,
102 )
104 class Meta:
105 model = SkosLabel
106 fields = "__all__"