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

1import django_filters 

2from django.utils.translation import gettext as _ 

3 

4from netbox.filtersets import BaseFilterSet 

5from utilities.filters import MultiValueContentTypeFilter, TreeNodeMultipleChoiceFilter 

6 

7from .models import * 

8 

9__all__ = ( 

10 'ScopedFilterSet', 

11) 

12 

13 

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 )