netbox-plugin-dns 1.2.11__py3-none-any.whl → 1.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of netbox-plugin-dns might be problematic. Click here for more details.

Files changed (82) hide show
  1. netbox_dns/__init__.py +2 -2
  2. netbox_dns/api/nested_serializers.py +54 -49
  3. netbox_dns/api/serializers_/dnssec_key_template.py +22 -13
  4. netbox_dns/api/serializers_/dnssec_policy.py +89 -40
  5. netbox_dns/api/serializers_/nameserver.py +25 -13
  6. netbox_dns/api/serializers_/record.py +45 -37
  7. netbox_dns/api/serializers_/record_template.py +21 -12
  8. netbox_dns/api/serializers_/registrar.py +14 -5
  9. netbox_dns/api/serializers_/registration_contact.py +13 -5
  10. netbox_dns/api/serializers_/view.py +28 -19
  11. netbox_dns/api/serializers_/zone.py +87 -63
  12. netbox_dns/api/serializers_/zone_template.py +40 -34
  13. netbox_dns/choices/dnssec_key_template.py +4 -0
  14. netbox_dns/filtersets/dnssec_key_template.py +10 -4
  15. netbox_dns/filtersets/dnssec_policy.py +1 -0
  16. netbox_dns/filtersets/nameserver.py +9 -4
  17. netbox_dns/filtersets/record.py +14 -13
  18. netbox_dns/filtersets/record_template.py +13 -12
  19. netbox_dns/filtersets/registrar.py +1 -0
  20. netbox_dns/filtersets/registration_contact.py +1 -0
  21. netbox_dns/filtersets/view.py +10 -4
  22. netbox_dns/filtersets/zone.py +22 -21
  23. netbox_dns/filtersets/zone_template.py +10 -9
  24. netbox_dns/forms/dnssec_key_template.py +97 -46
  25. netbox_dns/forms/dnssec_policy.py +130 -110
  26. netbox_dns/forms/nameserver.py +71 -36
  27. netbox_dns/forms/record.py +96 -78
  28. netbox_dns/forms/record_template.py +87 -59
  29. netbox_dns/forms/registrar.py +55 -39
  30. netbox_dns/forms/registration_contact.py +64 -41
  31. netbox_dns/forms/view.py +98 -51
  32. netbox_dns/forms/zone.py +259 -250
  33. netbox_dns/forms/zone_template.py +151 -101
  34. netbox_dns/graphql/enums.py +41 -0
  35. netbox_dns/graphql/filter_lookups.py +13 -0
  36. netbox_dns/graphql/filters/__init__.py +12 -0
  37. netbox_dns/graphql/filters/dnssec_key_template.py +63 -0
  38. netbox_dns/graphql/filters/dnssec_policy.py +123 -0
  39. netbox_dns/graphql/filters/nameserver.py +32 -0
  40. netbox_dns/graphql/filters/record.py +89 -0
  41. netbox_dns/graphql/filters/record_template.py +55 -0
  42. netbox_dns/graphql/filters/registrar.py +30 -0
  43. netbox_dns/graphql/filters/registration_contact.py +27 -0
  44. netbox_dns/graphql/filters/view.py +28 -0
  45. netbox_dns/graphql/filters/zone.py +146 -0
  46. netbox_dns/graphql/filters/zone_template.py +97 -0
  47. netbox_dns/models/dnssec_key_template.py +24 -27
  48. netbox_dns/models/dnssec_policy.py +17 -21
  49. netbox_dns/models/nameserver.py +26 -30
  50. netbox_dns/models/record.py +42 -46
  51. netbox_dns/models/record_template.py +30 -34
  52. netbox_dns/models/registrar.py +13 -17
  53. netbox_dns/models/registration_contact.py +33 -37
  54. netbox_dns/models/view.py +16 -20
  55. netbox_dns/models/zone.py +75 -78
  56. netbox_dns/models/zone_template.py +35 -39
  57. netbox_dns/tables/dnssec_key_template.py +13 -12
  58. netbox_dns/tables/dnssec_policy.py +18 -15
  59. netbox_dns/tables/nameserver.py +10 -8
  60. netbox_dns/tables/record.py +29 -21
  61. netbox_dns/tables/record_template.py +21 -17
  62. netbox_dns/tables/registrar.py +15 -9
  63. netbox_dns/tables/registration_contact.py +15 -9
  64. netbox_dns/tables/view.py +24 -12
  65. netbox_dns/tables/zone.py +23 -21
  66. netbox_dns/tables/zone_template.py +17 -13
  67. netbox_dns/views/dnssec_key_template.py +0 -9
  68. netbox_dns/views/dnssec_policy.py +0 -9
  69. netbox_dns/views/nameserver.py +0 -9
  70. netbox_dns/views/record.py +0 -9
  71. netbox_dns/views/record_template.py +0 -3
  72. netbox_dns/views/registrar.py +0 -3
  73. netbox_dns/views/registration_contact.py +0 -3
  74. netbox_dns/views/view.py +0 -9
  75. netbox_dns/views/zone.py +0 -10
  76. netbox_dns/views/zone_template.py +0 -4
  77. {netbox_plugin_dns-1.2.11.dist-info → netbox_plugin_dns-1.3.0.dist-info}/METADATA +4 -2
  78. {netbox_plugin_dns-1.2.11.dist-info → netbox_plugin_dns-1.3.0.dist-info}/RECORD +81 -69
  79. netbox_dns/graphql/filters.py +0 -88
  80. {netbox_plugin_dns-1.2.11.dist-info → netbox_plugin_dns-1.3.0.dist-info}/WHEEL +0 -0
  81. {netbox_plugin_dns-1.2.11.dist-info → netbox_plugin_dns-1.3.0.dist-info}/licenses/LICENSE +0 -0
  82. {netbox_plugin_dns-1.2.11.dist-info → netbox_plugin_dns-1.3.0.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,3 @@
1
- from packaging.version import Version
2
-
3
1
  from django import forms
4
2
  from django.utils.translation import gettext_lazy as _
5
3
 
@@ -9,7 +7,6 @@ from netbox.forms import (
9
7
  NetBoxModelImportForm,
10
8
  NetBoxModelForm,
11
9
  )
12
- from utilities.release import load_release_data
13
10
  from utilities.forms.fields import (
14
11
  DynamicModelMultipleChoiceField,
15
12
  TagFilterField,
@@ -38,44 +35,8 @@ __all__ = (
38
35
  "ZoneTemplateBulkEditForm",
39
36
  )
40
37
 
41
- QUICK_ADD = Version(load_release_data().version) >= Version("4.2.5")
42
-
43
38
 
44
39
  class ZoneTemplateForm(TenancyForm, NetBoxModelForm):
45
- nameservers = DynamicModelMultipleChoiceField(
46
- queryset=NameServer.objects.all(),
47
- required=False,
48
- quick_add=QUICK_ADD,
49
- )
50
- soa_mname = DynamicModelChoiceField(
51
- queryset=NameServer.objects.all(),
52
- required=False,
53
- label=_("MName"),
54
- quick_add=QUICK_ADD,
55
- )
56
- record_templates = DynamicModelMultipleChoiceField(
57
- queryset=RecordTemplate.objects.all(),
58
- required=False,
59
- quick_add=QUICK_ADD,
60
- )
61
-
62
- fieldsets = (
63
- FieldSet("name", "description", "nameservers", name=_("Zone Template")),
64
- FieldSet("soa_mname", "soa_rname", name=_("SOA")),
65
- FieldSet("record_templates", name=_("Record Templates")),
66
- FieldSet("dnssec_policy", name=_("DNSSEC")),
67
- FieldSet(
68
- "registrar",
69
- "registrant",
70
- "admin_c",
71
- "tech_c",
72
- "billing_c",
73
- name=_("Domain Registration"),
74
- ),
75
- FieldSet("tenant_group", "tenant", name=_("Tenancy")),
76
- FieldSet("tags", name=_("Tags")),
77
- )
78
-
79
40
  class Meta:
80
41
  model = ZoneTemplate
81
42
 
@@ -96,19 +57,96 @@ class ZoneTemplateForm(TenancyForm, NetBoxModelForm):
96
57
  "tenant",
97
58
  "tags",
98
59
  )
60
+
99
61
  labels = {
100
62
  "soa_rname": _("RName"),
101
63
  }
102
64
 
65
+ fieldsets = (
66
+ FieldSet(
67
+ "name",
68
+ "description",
69
+ "nameservers",
70
+ name=_("Zone Template"),
71
+ ),
72
+ FieldSet(
73
+ "soa_mname",
74
+ "soa_rname",
75
+ name=_("SOA"),
76
+ ),
77
+ FieldSet(
78
+ "record_templates",
79
+ name=_("Record Templates"),
80
+ ),
81
+ FieldSet(
82
+ "dnssec_policy",
83
+ name=_("DNSSEC"),
84
+ ),
85
+ FieldSet(
86
+ "registrar",
87
+ "registrant",
88
+ "admin_c",
89
+ "tech_c",
90
+ "billing_c",
91
+ name=_("Domain Registration"),
92
+ ),
93
+ FieldSet(
94
+ "tenant_group",
95
+ "tenant",
96
+ name=_("Tenancy"),
97
+ ),
98
+ FieldSet(
99
+ "tags",
100
+ name=_("Tags"),
101
+ ),
102
+ )
103
+
104
+ nameservers = DynamicModelMultipleChoiceField(
105
+ queryset=NameServer.objects.all(),
106
+ required=False,
107
+ quick_add=True,
108
+ )
109
+ soa_mname = DynamicModelChoiceField(
110
+ queryset=NameServer.objects.all(),
111
+ required=False,
112
+ label=_("MName"),
113
+ quick_add=True,
114
+ )
115
+ record_templates = DynamicModelMultipleChoiceField(
116
+ queryset=RecordTemplate.objects.all(),
117
+ required=False,
118
+ quick_add=True,
119
+ )
120
+
103
121
 
104
122
  class ZoneTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
105
123
  model = ZoneTemplate
124
+
106
125
  fieldsets = (
107
- FieldSet("q", "filter_id", "tag"),
108
- FieldSet("name", "nameserver_id", "description", name=_("Attributes")),
109
- FieldSet("soa_mname_id", "soa_rname", name=_("SOA")),
110
- FieldSet("record_template_id", name=_("Record Templates")),
111
- FieldSet("dnssec_policy", name=_("DNSSEC")),
126
+ FieldSet(
127
+ "q",
128
+ "filter_id",
129
+ "tag",
130
+ ),
131
+ FieldSet(
132
+ "name",
133
+ "nameserver_id",
134
+ "description",
135
+ name=_("Attributes"),
136
+ ),
137
+ FieldSet(
138
+ "soa_mname_id",
139
+ "soa_rname",
140
+ name=_("SOA"),
141
+ ),
142
+ FieldSet(
143
+ "record_template_id",
144
+ name=_("Record Templates"),
145
+ ),
146
+ FieldSet(
147
+ "dnssec_policy",
148
+ name=_("DNSSEC"),
149
+ ),
112
150
  FieldSet(
113
151
  "registrar_id",
114
152
  "registrant_id",
@@ -117,7 +155,11 @@ class ZoneTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
117
155
  "billing_c_id",
118
156
  name=_("Registration"),
119
157
  ),
120
- FieldSet("tenant_group_id", "tenant_id", name=_("Tenancy")),
158
+ FieldSet(
159
+ "tenant_group_id",
160
+ "tenant_id",
161
+ name=_("Tenancy"),
162
+ ),
121
163
  )
122
164
 
123
165
  name = forms.CharField(
@@ -189,6 +231,26 @@ class ZoneTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
189
231
 
190
232
 
191
233
  class ZoneTemplateImportForm(NetBoxModelImportForm):
234
+ class Meta:
235
+ model = ZoneTemplate
236
+
237
+ fields = (
238
+ "name",
239
+ "nameservers",
240
+ "soa_mname",
241
+ "soa_rname",
242
+ "record_templates",
243
+ "dnssec_policy",
244
+ "description",
245
+ "registrar",
246
+ "registrant",
247
+ "admin_c",
248
+ "tech_c",
249
+ "billing_c",
250
+ "tenant",
251
+ "tags",
252
+ )
253
+
192
254
  nameservers = CSVModelMultipleChoiceField(
193
255
  queryset=NameServer.objects.all(),
194
256
  to_field_name="name",
@@ -268,28 +330,59 @@ class ZoneTemplateImportForm(NetBoxModelImportForm):
268
330
  label=_("Tenant"),
269
331
  )
270
332
 
271
- class Meta:
272
- model = ZoneTemplate
273
333
 
274
- fields = (
275
- "name",
334
+ class ZoneTemplateBulkEditForm(NetBoxModelBulkEditForm):
335
+ model = ZoneTemplate
336
+
337
+ fieldsets = (
338
+ FieldSet(
276
339
  "nameservers",
340
+ "description",
341
+ name=_("Attributes"),
342
+ ),
343
+ FieldSet(
277
344
  "soa_mname",
278
345
  "soa_rname",
346
+ name=_("SOA"),
347
+ ),
348
+ FieldSet(
279
349
  "record_templates",
350
+ name=_("Record Templates"),
351
+ ),
352
+ FieldSet(
280
353
  "dnssec_policy",
281
- "description",
354
+ name=_("DNSSEC"),
355
+ ),
356
+ FieldSet(
282
357
  "registrar",
283
358
  "registrant",
284
359
  "admin_c",
285
360
  "tech_c",
286
361
  "billing_c",
362
+ name=_("Domain Registration"),
363
+ ),
364
+ FieldSet(
365
+ "tenant_group",
287
366
  "tenant",
288
- "tags",
289
- )
367
+ name=_("Tenancy"),
368
+ ),
369
+ )
290
370
 
371
+ nullable_fields = (
372
+ "description",
373
+ "nameservers",
374
+ "soa_mname",
375
+ "soa_rname",
376
+ "record_templates",
377
+ "dnssec_policy",
378
+ "registrar",
379
+ "registrant",
380
+ "admin_c",
381
+ "tech_c",
382
+ "billing_c",
383
+ "tenant",
384
+ )
291
385
 
292
- class ZoneTemplateBulkEditForm(NetBoxModelBulkEditForm):
293
386
  nameservers = DynamicModelMultipleChoiceField(
294
387
  queryset=NameServer.objects.all(),
295
388
  required=False,
@@ -300,7 +393,11 @@ class ZoneTemplateBulkEditForm(NetBoxModelBulkEditForm):
300
393
  required=False,
301
394
  label=_("MName"),
302
395
  )
303
- soa_rname = forms.CharField(max_length=255, required=False, label=_("RName"))
396
+ soa_rname = forms.CharField(
397
+ max_length=255,
398
+ required=False,
399
+ label=_("RName"),
400
+ )
304
401
  record_templates = DynamicModelMultipleChoiceField(
305
402
  queryset=RecordTemplate.objects.all(),
306
403
  required=False,
@@ -349,50 +446,3 @@ class ZoneTemplateBulkEditForm(NetBoxModelBulkEditForm):
349
446
  required=False,
350
447
  label=_("Tenant"),
351
448
  )
352
-
353
- model = ZoneTemplate
354
-
355
- fieldsets = (
356
- FieldSet(
357
- "nameservers",
358
- "description",
359
- name=_("Attributes"),
360
- ),
361
- FieldSet(
362
- "soa_mname",
363
- "soa_rname",
364
- name=_("SOA"),
365
- ),
366
- FieldSet(
367
- "record_templates",
368
- name=_("Record Templates"),
369
- ),
370
- FieldSet(
371
- "dnssec_policy",
372
- name=_("DNSSEC"),
373
- ),
374
- FieldSet(
375
- "registrar",
376
- "registrant",
377
- "admin_c",
378
- "tech_c",
379
- "billing_c",
380
- name=_("Domain Registration"),
381
- ),
382
- FieldSet("tenant_group", "tenant", name=_("Tenancy")),
383
- )
384
-
385
- nullable_fields = (
386
- "description",
387
- "nameservers",
388
- "soa_mname",
389
- "soa_rname",
390
- "record_templates",
391
- "dnssec_policy",
392
- "registrar",
393
- "registrant",
394
- "admin_c",
395
- "tech_c",
396
- "billing_c",
397
- "tenant",
398
- )
@@ -0,0 +1,41 @@
1
+ import strawberry
2
+
3
+ from netbox_dns.choices import (
4
+ RecordTypeChoices,
5
+ RecordClassChoices,
6
+ RecordStatusChoices,
7
+ ZoneStatusChoices,
8
+ DNSSECPolicyDigestChoices,
9
+ DNSSECPolicyStatusChoices,
10
+ DNSSECKeyTemplateTypeChoices,
11
+ DNSSECKeyTemplateAlgorithmChoices,
12
+ DNSSECKeyTemplateKeySizeChoices,
13
+ )
14
+
15
+ __all__ = (
16
+ "NetBoxDNSRecordTypeEnum",
17
+ "NetBoxDNSRecordClassEnum",
18
+ "NetBoxDNSRecordStatusEnum",
19
+ "NetBoxDNSZoneStatusEnum",
20
+ "NetBoxDNSDNSSECPolicyDigestEnum",
21
+ "NetBoxDNSDNSSECPolicyStatusEnum",
22
+ "NetBoxDNSDNSSECKeyTemplateTypeEnum",
23
+ "NetBoxDNSDNSSECKeyTemplateAlgorithmEnum",
24
+ "NetBoxDNSDNSSECKeyTemplateKeySizeEnum",
25
+ )
26
+
27
+ NetBoxDNSRecordTypeEnum = strawberry.enum(RecordTypeChoices.as_enum())
28
+ NetBoxDNSRecordClassEnum = strawberry.enum(RecordClassChoices.as_enum())
29
+ NetBoxDNSRecordStatusEnum = strawberry.enum(RecordStatusChoices.as_enum())
30
+ NetBoxDNSZoneStatusEnum = strawberry.enum(ZoneStatusChoices.as_enum())
31
+ NetBoxDNSDNSSECPolicyDigestEnum = strawberry.enum(DNSSECPolicyDigestChoices.as_enum())
32
+ NetBoxDNSDNSSECPolicyStatusEnum = strawberry.enum(DNSSECPolicyStatusChoices.as_enum())
33
+ NetBoxDNSDNSSECKeyTemplateTypeEnum = strawberry.enum(
34
+ DNSSECKeyTemplateTypeChoices.as_enum()
35
+ )
36
+ NetBoxDNSDNSSECKeyTemplateAlgorithmEnum = strawberry.enum(
37
+ DNSSECKeyTemplateAlgorithmChoices.as_enum()
38
+ )
39
+ NetBoxDNSDNSSECKeyTemplateKeySizeEnum = strawberry.enum(
40
+ DNSSECKeyTemplateKeySizeChoices.as_enum()
41
+ )
@@ -0,0 +1,13 @@
1
+ import strawberry
2
+
3
+ from netbox.graphql.filter_lookups import ArrayLookup
4
+
5
+ from netbox_dns.graphql.enums import NetBoxDNSDNSSECPolicyDigestEnum
6
+
7
+
8
+ @strawberry.input(
9
+ one_of=True,
10
+ description="Lookup for Array fields. Only one of the lookup fields can be set.",
11
+ )
12
+ class PolicyDigestArrayLookup(ArrayLookup[NetBoxDNSDNSSECPolicyDigestEnum]):
13
+ pass
@@ -0,0 +1,12 @@
1
+ from .view import *
2
+ from .zone import *
3
+ from .nameserver import *
4
+ from .record import *
5
+ from .registration_contact import *
6
+ from .registrar import *
7
+
8
+ from .zone_template import *
9
+ from .record_template import *
10
+
11
+ from .dnssec_key_template import *
12
+ from .dnssec_policy import *
@@ -0,0 +1,63 @@
1
+ from typing import Annotated, TYPE_CHECKING
2
+
3
+ import strawberry
4
+ import strawberry_django
5
+ from strawberry.scalars import ID
6
+ from strawberry_django import FilterLookup
7
+
8
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
9
+ from tenancy.graphql.filter_mixins import ContactFilterMixin, TenancyFilterMixin
10
+
11
+ if TYPE_CHECKING:
12
+ from netbox.graphql.filter_lookups import IntegerLookup
13
+ from .enums import (
14
+ NetBoxDNSDNSSECKeyTemplateTypeEnum,
15
+ NetBoxDNSDNSSECKeyTemplateAlgorithmEnum,
16
+ NetBoxDNSDNSSECKeyTemplateKeySizeEnum,
17
+ )
18
+ from .dnssec_policy import NetBoxDNSDNSSECPolicyFilter
19
+
20
+ from netbox_dns.models import DNSSECKeyTemplate
21
+
22
+
23
+ __all__ = ("NetBoxDNSDNSSECKeyTemplateFilter",)
24
+
25
+
26
+ @strawberry_django.filter(DNSSECKeyTemplate, lookups=True)
27
+ class NetBoxDNSDNSSECKeyTemplateFilter(
28
+ ContactFilterMixin, TenancyFilterMixin, NetBoxModelFilterMixin
29
+ ):
30
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
31
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
32
+ type: (
33
+ Annotated[
34
+ "NetBoxDNSDNSSECKeyTemplateTypeEnum",
35
+ strawberry.lazy("netbox_dns.graphql.enums"),
36
+ ]
37
+ | None
38
+ ) = strawberry_django.filter_field()
39
+ algorithm: (
40
+ Annotated[
41
+ "NetBoxDNSDNSSECKeyTemplateAlgorithmEnum",
42
+ strawberry.lazy("netbox_dns.graphql.enums"),
43
+ ]
44
+ | None
45
+ ) = strawberry_django.filter_field()
46
+ lifetime: (
47
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
48
+ | None
49
+ ) = strawberry_django.filter_field()
50
+ key_size: (
51
+ Annotated[
52
+ "NetBoxDNSDNSSECKeyTemplateKeySizeEnum",
53
+ strawberry.lazy("netbox_dns.graphql.enums"),
54
+ ]
55
+ | None
56
+ ) = strawberry_django.filter_field()
57
+ policy: (
58
+ Annotated[
59
+ "NetBoxDNSDNSSECPolicyFilter", strawberry.lazy("netbox_dns.graphql.filters")
60
+ ]
61
+ | None
62
+ ) = strawberry_django.filter_field()
63
+ policy_id: ID | None = strawberry_django.filter_field()
@@ -0,0 +1,123 @@
1
+ from typing import Annotated, TYPE_CHECKING
2
+
3
+ import strawberry
4
+ import strawberry_django
5
+ from strawberry_django import FilterLookup
6
+
7
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
8
+ from tenancy.graphql.filter_mixins import ContactFilterMixin, TenancyFilterMixin
9
+
10
+ if TYPE_CHECKING:
11
+ from netbox.graphql.filter_lookups import IntegerLookup
12
+ from .enums import NetBoxDNSDNSSECPolicyStatusEnum
13
+ from .dnssec_key_template import NetBoxDNSDNSSECKeyTemplateFilter
14
+ from .zone import NetBoxDNSZoneFilter
15
+ from .zone_template import NetBoxDNSZoneTemplateFilter
16
+
17
+ from netbox_dns.models import DNSSECPolicy
18
+ from netbox_dns.graphql.filter_lookups import PolicyDigestArrayLookup
19
+
20
+
21
+ __all__ = ("NetBoxDNSDNSSECPolicyFilter", "PolicyDigestArrayLookup")
22
+
23
+
24
+ @strawberry_django.filter(DNSSECPolicy, lookups=True)
25
+ class NetBoxDNSDNSSECPolicyFilter(
26
+ ContactFilterMixin, TenancyFilterMixin, NetBoxModelFilterMixin
27
+ ):
28
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
29
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
30
+ status: (
31
+ Annotated[
32
+ "NetBoxDNSDNSSECPolicyStatusEnum",
33
+ strawberry.lazy("netbox_dns.graphql.enums"),
34
+ ]
35
+ | None
36
+ ) = strawberry_django.filter_field()
37
+ key_templates: (
38
+ Annotated[
39
+ "NetBoxDNSDNSSECKeyTemplateFilter",
40
+ strawberry.lazy("netbox_dns.graphql.filters"),
41
+ ]
42
+ | None
43
+ ) = strawberry_django.filter_field()
44
+ zones: (
45
+ Annotated[
46
+ "NetBoxDNSZoneFilter",
47
+ strawberry.lazy("netbox_dns.graphql.filters"),
48
+ ]
49
+ | None
50
+ ) = strawberry_django.filter_field()
51
+ zone_templates: (
52
+ Annotated[
53
+ "NetBoxDNSZoneTemplateFilter",
54
+ strawberry.lazy("netbox_dns.graphql.filters"),
55
+ ]
56
+ | None
57
+ ) = strawberry_django.filter_field()
58
+ dnskey_ttl: (
59
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
60
+ | None
61
+ ) = strawberry_django.filter_field()
62
+ purge_keys: (
63
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
64
+ | None
65
+ ) = strawberry_django.filter_field()
66
+ publish_safety: (
67
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
68
+ | None
69
+ ) = strawberry_django.filter_field()
70
+ retire_safety: (
71
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
72
+ | None
73
+ ) = strawberry_django.filter_field()
74
+ signatures_jitter: (
75
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
76
+ | None
77
+ ) = strawberry_django.filter_field()
78
+ signatures_refresh: (
79
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
80
+ | None
81
+ ) = strawberry_django.filter_field()
82
+ signatures_validity: (
83
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
84
+ | None
85
+ ) = strawberry_django.filter_field()
86
+ signatures_validity_dnskey: (
87
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
88
+ | None
89
+ ) = strawberry_django.filter_field()
90
+ max_zone_ttl: (
91
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
92
+ | None
93
+ ) = strawberry_django.filter_field()
94
+ zone_propagation_delay: (
95
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
96
+ | None
97
+ ) = strawberry_django.filter_field()
98
+ cds_digest_types: (
99
+ Annotated[
100
+ "PolicyDigestArrayLookup",
101
+ strawberry.lazy("netbox_dns.graphql.filters"),
102
+ ]
103
+ | None
104
+ ) = strawberry_django.filter_field()
105
+ create_cdnskey: FilterLookup[bool] | None = strawberry_django.filter_field()
106
+ parent_ds_ttl: (
107
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
108
+ | None
109
+ ) = strawberry_django.filter_field()
110
+ parent_propagation_delay: (
111
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
112
+ | None
113
+ ) = strawberry_django.filter_field()
114
+ use_nsec3: FilterLookup[bool] | None = strawberry_django.filter_field()
115
+ nsec3_iterations: (
116
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
117
+ | None
118
+ ) = strawberry_django.filter_field()
119
+ nsec3_opt_out: FilterLookup[bool] | None = strawberry_django.filter_field()
120
+ nsec3_salt_size: (
121
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
122
+ | None
123
+ ) = strawberry_django.filter_field()
@@ -0,0 +1,32 @@
1
+ from typing import Annotated, TYPE_CHECKING
2
+
3
+ import strawberry
4
+ import strawberry_django
5
+ from strawberry_django import FilterLookup
6
+
7
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
8
+ from tenancy.graphql.filter_mixins import ContactFilterMixin, TenancyFilterMixin
9
+
10
+ if TYPE_CHECKING:
11
+ from .zone import NetBoxDNSZoneFilter
12
+
13
+ from netbox_dns.models import NameServer
14
+
15
+
16
+ __all__ = ("NetBoxDNSNameServerFilter",)
17
+
18
+
19
+ @strawberry_django.filter(NameServer, lookups=True)
20
+ class NetBoxDNSNameServerFilter(
21
+ ContactFilterMixin, TenancyFilterMixin, NetBoxModelFilterMixin
22
+ ):
23
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
24
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
25
+ zones: (
26
+ Annotated["NetBoxDNSZoneFilter", strawberry.lazy("netbox_dns.graphql.filters")]
27
+ | None
28
+ ) = strawberry_django.filter_field()
29
+ soa_zones: (
30
+ Annotated["NetBoxDNSZoneFilter", strawberry.lazy("netbox_dns.graphql.filters")]
31
+ | None
32
+ ) = strawberry_django.filter_field()