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
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1from typing import TYPE_CHECKING, Annotated
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
9from core import models
10from netbox.graphql.filters import BaseModelFilter, PrimaryModelFilter, register_filter
12from .enums import *
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
18__all__ = (
19 'ContentTypeFilter',
20 'DataFileFilter',
21 'DataSourceFilter',
22 'ObjectChangeFilter',
23)
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()
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 )
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 )
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()