Coverage for dcim/base_filtersets.py: 100%
16 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1import django_filters
2from django.utils.translation import gettext as _
4from netbox.filtersets import BaseFilterSet
5from utilities.filters import MultiValueContentTypeFilter, TreeNodeMultipleChoiceFilter
7from .models import *
9__all__ = (
10 'ScopedFilterSet',
11)
14class ScopedFilterSet(BaseFilterSet):
15 """
16 Provides additional filtering functionality for location, site, etc.. for Scoped models.
17 """
18 scope_type = MultiValueContentTypeFilter()
19 region_id = TreeNodeMultipleChoiceFilter(
20 queryset=Region.objects.all(),
21 field_name='_region',
22 lookup_expr='in',
23 label=_('Region (ID)'),
24 )
25 region = TreeNodeMultipleChoiceFilter(
26 queryset=Region.objects.all(),
27 field_name='_region',
28 lookup_expr='in',
29 to_field_name='slug',
30 label=_('Region (slug)'),
31 )
32 site_group_id = TreeNodeMultipleChoiceFilter(
33 queryset=SiteGroup.objects.all(),
34 field_name='_site_group',
35 lookup_expr='in',
36 label=_('Site group (ID)'),
37 )
38 site_group = TreeNodeMultipleChoiceFilter(
39 queryset=SiteGroup.objects.all(),
40 field_name='_site_group',
41 lookup_expr='in',
42 to_field_name='slug',
43 label=_('Site group (slug)'),
44 )
45 site_id = django_filters.ModelMultipleChoiceFilter(
46 queryset=Site.objects.all(),
47 distinct=False,
48 field_name='_site',
49 label=_('Site (ID)'),
50 )
51 site = django_filters.ModelMultipleChoiceFilter(
52 field_name='_site__slug',
53 queryset=Site.objects.all(),
54 distinct=False,
55 to_field_name='slug',
56 label=_('Site (slug)'),
57 )
58 location_id = TreeNodeMultipleChoiceFilter(
59 queryset=Location.objects.all(),
60 field_name='_location',
61 lookup_expr='in',
62 label=_('Location (ID)'),
63 )
64 location = TreeNodeMultipleChoiceFilter(
65 queryset=Location.objects.all(),
66 field_name='_location',
67 lookup_expr='in',
68 to_field_name='slug',
69 label=_('Location (slug)'),
70 )