Coverage for core/graphql/filters.py: 94%

52 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 18:35 +0000

1from typing import TYPE_CHECKING, Annotated 

2 

3import strawberry 

4import strawberry_django 

5from django.contrib.contenttypes.models import ContentType as DjangoContentType 

6from strawberry.scalars import ID 

7from strawberry_django import BaseFilterLookup, DatetimeFilterLookup, FilterLookup, StrFilterLookup 

8 

9from core import models 

10from netbox.graphql.filters import BaseModelFilter, PrimaryModelFilter, register_filter 

11 

12from .enums import * 

13 

14if TYPE_CHECKING: 14 ↛ 15line 14 didn't jump to line 15 because the condition on line 14 was never true

15 from netbox.graphql.filter_lookups import IntegerLookup, JSONFilter 

16 from users.graphql.filters import UserFilter 

17 

18__all__ = ( 

19 'ContentTypeFilter', 

20 'DataFileFilter', 

21 'DataSourceFilter', 

22 'ObjectChangeFilter', 

23) 

24 

25 

26@register_filter(models.DataFile, lookups=True) 

27class DataFileFilter(BaseModelFilter): 

28 created: DatetimeFilterLookup | None = strawberry_django.filter_field() 

29 last_updated: DatetimeFilterLookup | None = strawberry_django.filter_field() 

30 source: Annotated['DataSourceFilter', strawberry.lazy('core.graphql.filters')] | None = ( 

31 strawberry_django.filter_field() 

32 ) 

33 source_id: ID | None = strawberry_django.filter_field() 

34 path: StrFilterLookup | None = strawberry_django.filter_field() 

35 size: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = ( 

36 strawberry_django.filter_field() 

37 ) 

38 hash: StrFilterLookup | None = strawberry_django.filter_field() 

39 

40 

41@register_filter(models.DataSource, lookups=True) 

42class DataSourceFilter(PrimaryModelFilter): 

43 name: StrFilterLookup | None = strawberry_django.filter_field() 

44 type: StrFilterLookup | None = strawberry_django.filter_field() 

45 source_url: StrFilterLookup | None = strawberry_django.filter_field() 

46 status: ( 

47 BaseFilterLookup[Annotated['DataSourceStatusEnum', strawberry.lazy('core.graphql.enums')]] | None 

48 ) = strawberry_django.filter_field() 

49 enabled: FilterLookup[bool] | None = strawberry_django.filter_field() 

50 ignore_rules: StrFilterLookup | None = strawberry_django.filter_field() 

51 parameters: Annotated['JSONFilter', strawberry.lazy('netbox.graphql.filter_lookups')] | None = ( 

52 strawberry_django.filter_field() 

53 ) 

54 last_synced: DatetimeFilterLookup | None = strawberry_django.filter_field() 

55 datafiles: Annotated['DataFileFilter', strawberry.lazy('core.graphql.filters')] | None = ( 

56 strawberry_django.filter_field() 

57 ) 

58 

59 

60@register_filter(models.ObjectChange, lookups=True) 

61class ObjectChangeFilter(BaseModelFilter): 

62 time: DatetimeFilterLookup | None = strawberry_django.filter_field() 

63 user: Annotated['UserFilter', strawberry.lazy('users.graphql.filters')] | None = strawberry_django.filter_field() 

64 user_name: StrFilterLookup | None = strawberry_django.filter_field() 

65 request_id: StrFilterLookup | None = strawberry_django.filter_field() 

66 action: ( 

67 BaseFilterLookup[Annotated['ObjectChangeActionEnum', strawberry.lazy('core.graphql.enums')]] | None 

68 ) = strawberry_django.filter_field() 

69 changed_object_type: Annotated['ContentTypeFilter', strawberry.lazy('core.graphql.filters')] | None = ( 

70 strawberry_django.filter_field() 

71 ) 

72 changed_object_type_id: ID | None = strawberry_django.filter_field() 

73 changed_object_id: ID | None = strawberry_django.filter_field() 

74 related_object_type: Annotated['ContentTypeFilter', strawberry.lazy('core.graphql.filters')] | None = ( 

75 strawberry_django.filter_field() 

76 ) 

77 related_object_id: ID | None = strawberry_django.filter_field() 

78 object_repr: StrFilterLookup | None = strawberry_django.filter_field() 

79 prechange_data: Annotated['JSONFilter', strawberry.lazy('netbox.graphql.filter_lookups')] | None = ( 

80 strawberry_django.filter_field() 

81 ) 

82 postchange_data: Annotated['JSONFilter', strawberry.lazy('netbox.graphql.filter_lookups')] | None = ( 

83 strawberry_django.filter_field() 

84 ) 

85 

86 

87@register_filter(DjangoContentType, lookups=True) 

88class ContentTypeFilter(BaseModelFilter): 

89 app_label: StrFilterLookup | None = strawberry_django.filter_field() 

90 model: StrFilterLookup | None = strawberry_django.filter_field()