netbox-plugin-dns 1.2.7b2__py3-none-any.whl → 1.2.7b3__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.

netbox_dns/__init__.py CHANGED
@@ -7,7 +7,7 @@ from ipam.choices import IPAddressStatusChoices
7
7
 
8
8
  from netbox_dns.choices import RecordTypeChoices, RecordStatusChoices, ZoneStatusChoices
9
9
 
10
- __version__ = "1.2.7-beta2"
10
+ __version__ = "1.2.7-beta3"
11
11
 
12
12
 
13
13
  def _check_list(setting):
@@ -3,7 +3,7 @@ from rest_framework import serializers
3
3
 
4
4
  from netbox.api.serializers import WritableNestedSerializer
5
5
 
6
- from netbox_dns.models import Zone, Record, ZoneTemplate, RecordTemplate
6
+ from netbox_dns.models import Zone, Record, ZoneTemplate, RecordTemplate, DNSSECPolicy
7
7
  from netbox_dns.api.serializers_.view import ViewSerializer
8
8
 
9
9
 
@@ -12,6 +12,7 @@ __all__ = (
12
12
  "NestedRecordSerializer",
13
13
  "NestedZoneTemplateSerializer",
14
14
  "NestedRecordTemplateSerializer",
15
+ "NestedDNSSECPolicySerializer",
15
16
  )
16
17
 
17
18
 
@@ -127,3 +128,20 @@ class NestedRecordTemplateSerializer(WritableNestedSerializer):
127
128
  "ttl",
128
129
  "description",
129
130
  )
131
+
132
+
133
+ class NestedDNSSECPolicySerializer(WritableNestedSerializer):
134
+ url = serializers.HyperlinkedIdentityField(
135
+ view_name="plugins-api:netbox_dns-api:dnssecpolicy-detail"
136
+ )
137
+
138
+ class Meta:
139
+ model = DNSSECPolicy
140
+ fields = (
141
+ "id",
142
+ "url",
143
+ "display",
144
+ "name",
145
+ "description",
146
+ "status",
147
+ )
@@ -1,3 +1,4 @@
1
+ from django.utils.translation import gettext as _
1
2
  from rest_framework import serializers
2
3
 
3
4
  from netbox.api.serializers import NetBoxModelSerializer
@@ -5,6 +6,8 @@ from tenancy.api.serializers_.tenants import TenantSerializer
5
6
 
6
7
  from netbox_dns.models import DNSSECKeyTemplate
7
8
 
9
+ from ..nested_serializers import NestedDNSSECPolicySerializer
10
+
8
11
 
9
12
  __all__ = ("DNSSECKeyTemplateSerializer",)
10
13
 
@@ -13,6 +16,13 @@ class DNSSECKeyTemplateSerializer(NetBoxModelSerializer):
13
16
  url = serializers.HyperlinkedIdentityField(
14
17
  view_name="plugins-api:netbox_dns-api:dnsseckeytemplate-detail"
15
18
  )
19
+ policies = NestedDNSSECPolicySerializer(
20
+ many=True,
21
+ read_only=True,
22
+ required=False,
23
+ default=None,
24
+ help_text=_("Policies using this Key Template"),
25
+ )
16
26
  tenant = TenantSerializer(required=False, allow_null=True)
17
27
 
18
28
  class Meta:
@@ -23,6 +33,7 @@ class DNSSECKeyTemplateSerializer(NetBoxModelSerializer):
23
33
  "display",
24
34
  "name",
25
35
  "description",
36
+ "policies",
26
37
  "tags",
27
38
  "type",
28
39
  "lifetime",
@@ -7,6 +7,7 @@ from tenancy.api.serializers_.tenants import TenantSerializer
7
7
  from netbox_dns.models import DNSSECPolicy
8
8
 
9
9
  from .dnssec_key_template import DNSSECKeyTemplateSerializer
10
+ from ..nested_serializers import NestedZoneSerializer, NestedZoneTemplateSerializer
10
11
 
11
12
 
12
13
  __all__ = ("DNSSECPolicySerializer",)
@@ -24,6 +25,20 @@ class DNSSECPolicySerializer(NetBoxModelSerializer):
24
25
  default=None,
25
26
  help_text=_("Key templates assigned to the policy"),
26
27
  )
28
+ zones = NestedZoneSerializer(
29
+ many=True,
30
+ read_only=True,
31
+ required=False,
32
+ default=None,
33
+ help_text=_("Zones this policy is assigned to"),
34
+ )
35
+ zone_templates = NestedZoneTemplateSerializer(
36
+ many=True,
37
+ read_only=True,
38
+ required=False,
39
+ default=None,
40
+ help_text=_("Zone templates this policy is assigned to"),
41
+ )
27
42
  tenant = TenantSerializer(required=False, allow_null=True)
28
43
 
29
44
  class Meta:
@@ -37,6 +52,8 @@ class DNSSECPolicySerializer(NetBoxModelSerializer):
37
52
  "status",
38
53
  "tags",
39
54
  "key_templates",
55
+ "zones",
56
+ "zone_templates",
40
57
  "dnskey_ttl",
41
58
  "purge_keys",
42
59
  "publish_safety",
@@ -57,7 +57,7 @@ class DNSSECKeyTemplateKeySizeChoices(ChoiceSet):
57
57
  @define_choice_attributes()
58
58
  class DNSSECKeyTemplateAlgorithmChoices(ChoiceSet):
59
59
  CHOICES = [
60
- (algorithm.name, algorithm.name)
61
- for algorithm in sorted(Algorithm, key=lambda a: a.name)
60
+ (algorithm.name, f"{algorithm.name} ({algorithm.value})")
61
+ for algorithm in sorted(Algorithm, key=lambda a: a.value)
62
62
  if algorithm.value < 252 and algorithm not in DEPRECATED_ALGORITHMS
63
63
  ]
@@ -1,5 +1,15 @@
1
1
  from django import forms
2
2
  from django.contrib.postgres.fields import ArrayField
3
+ from django.db.models import Transform, IntegerField
4
+
5
+
6
+ class ArrayLength(Transform):
7
+ lookup_name = "length"
8
+ function = "cardinality"
9
+
10
+ @property
11
+ def output_field(self):
12
+ return IntegerField()
3
13
 
4
14
 
5
15
  class _TypedMultipleChoiceField(forms.TypedMultipleChoiceField):
@@ -18,3 +28,6 @@ class ChoiceArrayField(ArrayField):
18
28
  coerce=self.base_field.to_python,
19
29
  **kwargs,
20
30
  )
31
+
32
+
33
+ ChoiceArrayField.register_lookup(ArrayLength)
@@ -1,4 +1,4 @@
1
- from django.forms import Field
1
+ from django.forms import Field, TextInput
2
2
  from django.utils.dateparse import parse_duration
3
3
  from django.core.exceptions import ValidationError
4
4
 
@@ -7,6 +7,14 @@ __all__ = ("TimePeriodField",)
7
7
 
8
8
 
9
9
  class TimePeriodField(Field):
10
+ def __init__(self, *args, **kwargs):
11
+ placeholder = kwargs.pop("placeholder", None)
12
+
13
+ if placeholder is not None:
14
+ self.widget = TextInput(attrs={"placeholder": placeholder})
15
+
16
+ return super().__init__(*args, **kwargs)
17
+
10
18
  def to_python(self, value):
11
19
  if not value:
12
20
  return None
@@ -27,13 +27,13 @@ class DNSSECKeyTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
27
27
  choices=DNSSECKeyTemplateKeySizeChoices,
28
28
  )
29
29
 
30
- policy_id = django_filters.ModelMultipleChoiceFilter(
30
+ policies_id = django_filters.ModelMultipleChoiceFilter(
31
31
  field_name="policies",
32
32
  queryset=DNSSECPolicy.objects.all(),
33
33
  to_field_name="id",
34
34
  label=_("DNSSEC Policy IDs"),
35
35
  )
36
- policy = django_filters.ModelMultipleChoiceFilter(
36
+ policies = django_filters.ModelMultipleChoiceFilter(
37
37
  field_name="policies__name",
38
38
  queryset=DNSSECPolicy.objects.all(),
39
39
  to_field_name="name",
@@ -7,7 +7,7 @@ from netbox.filtersets import NetBoxModelFilterSet
7
7
  from tenancy.filtersets import TenancyFilterSet
8
8
  from utilities.filters import MultiValueCharFilter
9
9
 
10
- from netbox_dns.models import DNSSECPolicy, DNSSECKeyTemplate
10
+ from netbox_dns.models import DNSSECPolicy, DNSSECKeyTemplate, Zone, ZoneTemplate
11
11
  from netbox_dns.choices import DNSSECPolicyStatusChoices
12
12
 
13
13
  __all__ = ("DNSSECPolicyFilterSet",)
@@ -47,18 +47,42 @@ class DNSSECPolicyFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
47
47
  method="filter_cds_digest_types",
48
48
  label=_("CDS Digest Types"),
49
49
  )
50
- key_template = django_filters.ModelMultipleChoiceFilter(
50
+ key_templates = django_filters.ModelMultipleChoiceFilter(
51
51
  field_name="key_templates__name",
52
52
  queryset=DNSSECKeyTemplate.objects.all(),
53
53
  to_field_name="name",
54
54
  label=_("DNSSEC Key Templates"),
55
55
  )
56
- key_template_id = django_filters.ModelMultipleChoiceFilter(
56
+ key_templates_id = django_filters.ModelMultipleChoiceFilter(
57
57
  field_name="key_templates",
58
58
  queryset=DNSSECKeyTemplate.objects.all(),
59
59
  to_field_name="id",
60
60
  label=_("DNSSEC Key Template IDs"),
61
61
  )
62
+ zones = django_filters.ModelMultipleChoiceFilter(
63
+ field_name="zones__name",
64
+ queryset=Zone.objects.all(),
65
+ to_field_name="name",
66
+ label=_("Zones"),
67
+ )
68
+ zones_id = django_filters.ModelMultipleChoiceFilter(
69
+ field_name="zones",
70
+ queryset=Zone.objects.all(),
71
+ to_field_name="id",
72
+ label=_("Zone IDs"),
73
+ )
74
+ zone_templates = django_filters.ModelMultipleChoiceFilter(
75
+ field_name="zone_templates__name",
76
+ queryset=ZoneTemplate.objects.all(),
77
+ to_field_name="name",
78
+ label=_("Zone Templates"),
79
+ )
80
+ zone_templates_id = django_filters.ModelMultipleChoiceFilter(
81
+ field_name="zone_templates",
82
+ queryset=ZoneTemplate.objects.all(),
83
+ to_field_name="id",
84
+ label=_("Zone Template IDs"),
85
+ )
62
86
 
63
87
  def filter_cds_digest_types(self, queryset, name, value):
64
88
  if not value:
@@ -68,7 +68,7 @@ class DNSSECKeyTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
68
68
  fieldsets = (
69
69
  FieldSet("q", "filter_id", "tag"),
70
70
  FieldSet("name", "description", name=_("Attributes")),
71
- FieldSet("policy_id", name=_("Policies")),
71
+ FieldSet("policies_id", name=_("Policies")),
72
72
  FieldSet("type", "lifetime", "algorithm", "key_size", name=_("Key Properties")),
73
73
  FieldSet("tenant_group_id", "tenant_id", name=_("Tenancy")),
74
74
  )
@@ -79,7 +79,7 @@ class DNSSECKeyTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
79
79
  description = forms.CharField(
80
80
  required=False,
81
81
  )
82
- policy_id = DynamicModelMultipleChoiceField(
82
+ policies_id = DynamicModelMultipleChoiceField(
83
83
  queryset=DNSSECPolicy.objects.all(),
84
84
  required=False,
85
85
  label=_("Policies"),
@@ -23,7 +23,7 @@ from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, add_blank_choice
23
23
  from tenancy.models import Tenant, TenantGroup
24
24
  from tenancy.forms import TenancyForm, TenancyFilterForm
25
25
 
26
- from netbox_dns.models import DNSSECPolicy, DNSSECKeyTemplate
26
+ from netbox_dns.models import DNSSECPolicy, DNSSECKeyTemplate, Zone, ZoneTemplate
27
27
  from netbox_dns.choices import DNSSECPolicyDigestChoices, DNSSECPolicyStatusChoices
28
28
  from netbox_dns.fields import TimePeriodField
29
29
 
@@ -74,7 +74,7 @@ class DNSSECPolicyForm(TenancyForm, NetBoxModelForm):
74
74
  "nsec3_salt_size",
75
75
  name=_("Proof of Non-Existence"),
76
76
  ),
77
- FieldSet("tenant_group_id", "tenant_id", name=_("Tenancy")),
77
+ FieldSet("tenant_group", "tenant", name=_("Tenancy")),
78
78
  FieldSet("tags", name=_("Tags")),
79
79
  )
80
80
 
@@ -119,50 +119,62 @@ class DNSSECPolicyForm(TenancyForm, NetBoxModelForm):
119
119
  dnskey_ttl = TimePeriodField(
120
120
  required=False,
121
121
  label=_("DNSKEY TTL"),
122
+ placeholder=DNSSECPolicy.get_fallback_setting("dnskey_ttl"),
122
123
  )
123
124
  purge_keys = TimePeriodField(
124
125
  required=False,
125
126
  label=_("Purge Keys"),
127
+ placeholder=DNSSECPolicy.get_fallback_setting("purge_keys"),
126
128
  )
127
129
  publish_safety = TimePeriodField(
128
130
  required=False,
129
131
  label=_("Publish Safety"),
132
+ placeholder=DNSSECPolicy.get_fallback_setting("publish_safety"),
130
133
  )
131
134
  retire_safety = TimePeriodField(
132
135
  required=False,
133
136
  label=_("Retire Safety"),
137
+ placeholder=DNSSECPolicy.get_fallback_setting("retire_safety"),
134
138
  )
135
139
  signatures_jitter = TimePeriodField(
136
140
  required=False,
137
141
  label=_("Signatures Jitter"),
142
+ placeholder=DNSSECPolicy.get_fallback_setting("signatures_jitter"),
138
143
  )
139
144
  signatures_refresh = TimePeriodField(
140
145
  required=False,
141
146
  label=_("Signatures Refresh"),
147
+ placeholder=DNSSECPolicy.get_fallback_setting("signatures_refresh"),
142
148
  )
143
149
  signatures_validity = TimePeriodField(
144
150
  required=False,
145
151
  label=_("Signatures Validity"),
152
+ placeholder=DNSSECPolicy.get_fallback_setting("signatures_validity"),
146
153
  )
147
154
  signatures_validity_dnskey = TimePeriodField(
148
155
  required=False,
149
156
  label=_("Signatures Validity (DNSKEY)"),
157
+ placeholder=DNSSECPolicy.get_fallback_setting("signatures_validity_dnskey"),
150
158
  )
151
159
  max_zone_ttl = TimePeriodField(
152
160
  required=False,
153
161
  label=_("Max Zone TTL"),
162
+ placeholder=DNSSECPolicy.get_fallback_setting("max_zone_ttl"),
154
163
  )
155
164
  zone_propagation_delay = TimePeriodField(
156
165
  required=False,
157
166
  label=_("Zone Propagation Delay"),
167
+ placeholder=DNSSECPolicy.get_fallback_setting("zone_propagation_delay"),
158
168
  )
159
169
  parent_ds_ttl = TimePeriodField(
160
170
  required=False,
161
171
  label=_("Parent DS TTL"),
172
+ placeholder=DNSSECPolicy.get_fallback_setting("parent_ds_ttl"),
162
173
  )
163
174
  parent_propagation_delay = TimePeriodField(
164
175
  required=False,
165
176
  label=_("Parent Propagation Delay"),
177
+ placeholder=DNSSECPolicy.get_fallback_setting("parent_propagation_delay"),
166
178
  )
167
179
 
168
180
 
@@ -174,9 +186,14 @@ class DNSSECPolicyFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
174
186
  "name",
175
187
  "description",
176
188
  "status",
177
- "key_template_id",
189
+ "key_templates_id",
178
190
  name=_("Attributes"),
179
191
  ),
192
+ FieldSet(
193
+ "zones_id",
194
+ "zone_templates_id",
195
+ name=_("Assignments"),
196
+ ),
180
197
  FieldSet(
181
198
  "dnskey_ttl",
182
199
  "purge_keys",
@@ -219,11 +236,21 @@ class DNSSECPolicyFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
219
236
  required=False,
220
237
  label=_("Status"),
221
238
  )
222
- key_template_id = DynamicModelMultipleChoiceField(
239
+ key_templates_id = DynamicModelMultipleChoiceField(
223
240
  queryset=DNSSECKeyTemplate.objects.all(),
224
241
  required=False,
225
242
  label=_("Key Templates"),
226
243
  )
244
+ zones_id = DynamicModelMultipleChoiceField(
245
+ queryset=Zone.objects.all(),
246
+ required=False,
247
+ label=_("Zones"),
248
+ )
249
+ zone_templates_id = DynamicModelMultipleChoiceField(
250
+ queryset=ZoneTemplate.objects.all(),
251
+ required=False,
252
+ label=_("Zone Templates"),
253
+ )
227
254
  dnskey_ttl = TimePeriodField(
228
255
  required=False,
229
256
  label=_("DNSKEY TTL"),
Binary file
Binary file
@@ -181,16 +181,18 @@ class DNSSECPolicy(ContactsMixin, NetBoxModel):
181
181
  return self.publish_safety if self.publish_safety is not None else 3600
182
182
 
183
183
  def get_effective_value(self, attribute):
184
- default_value = get_plugin_config("netbox_dns", f"dnssec_{attribute}", None)
185
-
186
184
  if not hasattr(self, attribute):
187
185
  raise AttributeError(f"DNSSECPolicy does not have attribute {attribute}")
188
186
 
189
187
  if (value := getattr(self, attribute)) is None:
190
- return default_value
188
+ return self.get_fallback_setting(attribute)
191
189
 
192
190
  return value
193
191
 
192
+ @classmethod
193
+ def get_fallback_setting(cls, attribute):
194
+ return get_plugin_config("netbox_dns", f"dnssec_{attribute}")
195
+
194
196
 
195
197
  @register_search
196
198
  class DNSSECPolicyIndex(SearchIndex):
@@ -97,8 +97,8 @@ def validate_key_template_lifetime(key_template, policy, raise_exception=True):
97
97
  ):
98
98
  validation_errors.append(
99
99
  _(
100
- "Key Lifetime is less than DNSKEY TTL + Publish Safety + Zone Propagation Delay."
101
- )
100
+ "Key Lifetime {lifetime} is less than DNSKEY TTL + Publish Safety + Zone Propagation Delay."
101
+ ).format(lifetime=key_lifetime)
102
102
  )
103
103
 
104
104
  if (
@@ -109,8 +109,8 @@ def validate_key_template_lifetime(key_template, policy, raise_exception=True):
109
109
  ):
110
110
  validation_errors.append(
111
111
  _(
112
- "Key Lifetime is less than Max Zone TTL + Retire Safety + Zone Propagation Delay."
113
- )
112
+ "Key Lifetime {lifetime} is less than Max Zone TTL + Retire Safety + Zone Propagation Delay."
113
+ ).format(lifetime=key_lifetime)
114
114
  )
115
115
 
116
116
  if key_template.type == DNSSECKeyTemplateTypeChoices.TYPE_ZSK:
@@ -123,8 +123,10 @@ def validate_key_template_lifetime(key_template, policy, raise_exception=True):
123
123
  and key_lifetime < signatures_validity - signatures_refresh
124
124
  ):
125
125
  validation_errors.append(
126
- _("Key Lifetime is less than Signatures Validity - Signatures Refresh.")
127
- )
126
+ _(
127
+ "Key Lifetime {lifetime} is less than Signatures Validity - Signatures Refresh."
128
+ )
129
+ ).format(lifetime=key_lifetime)
128
130
  else:
129
131
  parent_ds_ttl = policy.get_effective_value("parent_ds_ttl")
130
132
  parent_propagation_delay = policy.get_effective_value(
@@ -139,8 +141,8 @@ def validate_key_template_lifetime(key_template, policy, raise_exception=True):
139
141
  ):
140
142
  validation_errors.append(
141
143
  _(
142
- "Key Lifetime is less than Parent DS TTL + Retire Safety + Parent Propagation Delay."
143
- )
144
+ "Key Lifetime {lifetime} is less than Parent DS TTL + Retire Safety + Parent Propagation Delay."
145
+ ).format(lifetime=key_lifetime)
144
146
  )
145
147
 
146
148
  return validation_errors
@@ -46,7 +46,9 @@ class DNSSECPolicyListView(generic.ObjectListView):
46
46
 
47
47
  @register_model_view(DNSSECPolicy)
48
48
  class DNSSECPolicyView(generic.ObjectView):
49
- queryset = DNSSECPolicy.objects.prefetch_related("key_templates")
49
+ queryset = DNSSECPolicy.objects.prefetch_related(
50
+ "key_templates", "zones", "zone_templates"
51
+ )
50
52
 
51
53
  def get_extra_context(self, request, instance):
52
54
  context = {}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: netbox-plugin-dns
3
- Version: 1.2.7b2
3
+ Version: 1.2.7b3
4
4
  Summary: NetBox DNS is a NetBox plugin for managing DNS data.
5
5
  Author-email: Peter Eckel <pete@netbox-dns.org>
6
6
  Project-URL: Homepage, https://github.com/peteeckel/netbox-plugin-dns
@@ -1,15 +1,15 @@
1
- netbox_dns/__init__.py,sha256=p7_4AWAau8aG1UBylTcxA3jToayAQMW9XOZJJ16ZecA,3765
1
+ netbox_dns/__init__.py,sha256=VVKUApX3xr_SAcF6I6JvHIME3eLseCTfgEWfnPfpY-c,3765
2
2
  netbox_dns/apps.py,sha256=JCW5eS-AQBUubDJve1DjP-IRFKTFGQh1NLGWzJpC5MI,151
3
3
  netbox_dns/navigation.py,sha256=u90MwWBySg1Z9yfZEdvUctYWEkab5z1Y3019J7U_-3g,7741
4
4
  netbox_dns/template_content.py,sha256=T06L7-m4eGrLMeGsCvPpQLAGfn3S2FL7z0Cd1hhbisY,4225
5
5
  netbox_dns/urls.py,sha256=B00wVs22LOx9VC5boyvL-jo84MiVd_g3FPFCpTDQAgQ,2424
6
- netbox_dns/api/nested_serializers.py,sha256=RfwT96Kd-E25oTPxnYVMZX04ZGCSww15c1TmPG8zZk4,3251
6
+ netbox_dns/api/nested_serializers.py,sha256=zg6FaSeWQdVL2fTUIsKPv4gC60gyJuLEiqbrAC0wRQc,3690
7
7
  netbox_dns/api/serializers.py,sha256=OHrpfJkBn6D1y6b3nIxBEFyE50U5p-Aqv4lBojMEFgk,474
8
8
  netbox_dns/api/urls.py,sha256=-kQaei47yZeGbDpQ9RaFaFlFb682ThuPA5h321_2cgM,1000
9
9
  netbox_dns/api/views.py,sha256=w71SRyZue5zPD1C64TIr496nYFA_ARjHTlpSVFTZ76o,4522
10
10
  netbox_dns/api/serializers_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- netbox_dns/api/serializers_/dnssec_key_template.py,sha256=nWbEj1FGygDWhrJmEd4BlFg7SiLEHcutceCIfCCNfGg,1139
12
- netbox_dns/api/serializers_/dnssec_policy.py,sha256=IapAT7fI2mSvail_rkXL7c1ZHVgVnlmmgqChpQNoLbw,2466
11
+ netbox_dns/api/serializers_/dnssec_key_template.py,sha256=X9ZcHwyAxTXrkRzcLvd0R2xHO6KTot2IUy_BSSJ9dPw,1473
12
+ netbox_dns/api/serializers_/dnssec_policy.py,sha256=w_l-_F_onDNzvjSCmonnmUar8gipDSxL6trpnNLQ2b0,2999
13
13
  netbox_dns/api/serializers_/nameserver.py,sha256=DMkUaLNDt3UtpAD6JDHfo1NMngHWRqHh2-xQeOPlfFM,1171
14
14
  netbox_dns/api/serializers_/prefix.py,sha256=kZ1DjDly6VFZamXSxGa57YC6MfZZcI5S7jmGBkVB2_I,551
15
15
  netbox_dns/api/serializers_/record.py,sha256=gpfANXhAcPylFWmWpCfwSEHrYy3b9Wl07PIyM4sPKM0,2408
@@ -20,21 +20,21 @@ netbox_dns/api/serializers_/view.py,sha256=nnWeQugoqMdn-NGGC7ykbVPwmBrcBma_ZKwdD
20
20
  netbox_dns/api/serializers_/zone.py,sha256=ARUvmQpMOlJlS5Zo5_ItL855oxK0bSnZFvnTL-ENaow,5675
21
21
  netbox_dns/api/serializers_/zone_template.py,sha256=gYlP6wBSVoTZ-DVxJHzGz2fyLdcyibTYR1O9czEKl_k,4374
22
22
  netbox_dns/choices/__init__.py,sha256=K3JfawICeoUny8O_Dqexr7DOxwyg3QqijZ4DO6j5yP8,106
23
- netbox_dns/choices/dnssec_key_template.py,sha256=I1EeEBT1wqOU7CT8CozSjH-Q7JL0udoze9qBoFj_-b4,1403
23
+ netbox_dns/choices/dnssec_key_template.py,sha256=YwJYGbxq2EVPUVwMs-sy1k1MJuEwbdWFVZh84qyU-QI,1429
24
24
  netbox_dns/choices/dnssec_policy.py,sha256=s6kz8gTiAuyTzn4piGbl2K9mVG-zga8n1rqZD26l72A,843
25
25
  netbox_dns/choices/record.py,sha256=PRS9crKoEZdFXTo6RRqXoFztfx9u3TZPsxq0T4Qdwj0,1423
26
26
  netbox_dns/choices/utilities.py,sha256=CV-77-iHKbgSOCDwrTTzsrIpZOq4cBnIf3rhvI0_5qs,711
27
27
  netbox_dns/choices/zone.py,sha256=Vblm5RUtNtPNkULh8U1NxBMme1iHPllD6B6LkQkWZW4,621
28
28
  netbox_dns/fields/__init__.py,sha256=yUVrNQ7BvoeVRGoiRFmrZxXsp1LIwHLRLl0_5mBIyzk,143
29
29
  netbox_dns/fields/address.py,sha256=qNLHmpwwJ3TevljG1QsUr_f2h6NrPsK6wr-R-Ti8eZI,1262
30
- netbox_dns/fields/choice_array.py,sha256=hRKZrdjQqxe4yZzmSlXrHgfCiJrT0FiCVqRddEO8IRc,588
30
+ netbox_dns/fields/choice_array.py,sha256=qECgwzJ9PVGIbpqC_JVzuSUsV7C3FG03ibv1EUrvZr4,850
31
31
  netbox_dns/fields/ipam.py,sha256=wla-kBm77BpD0LNQhgRZS1RYbVois7WDqPpyQkUT02k,481
32
32
  netbox_dns/fields/network.py,sha256=a5nTzjscRufxgMjVsf5juszSYuTujU50pQ9P7q4qMVs,3740
33
33
  netbox_dns/fields/rfc2317.py,sha256=y72PZKlXZ8_6P4eeWZ8IF3gqOMjPxW48gk3AB81XboE,2642
34
- netbox_dns/fields/timeperiod.py,sha256=QEdrmczeZWpBCuZubFrWxiHtm973qneGMM2LvtIosqM,901
34
+ netbox_dns/fields/timeperiod.py,sha256=bC9Qs4HLj1E8I5d9aqLwFeBbwNJNwHdrlnWf5z3PTkQ,1167
35
35
  netbox_dns/filtersets/__init__.py,sha256=bKppz_w3X2xNNHOcxZZiIO7zSkDaNTrZJ__k1U7rKik,275
36
- netbox_dns/filtersets/dnssec_key_template.py,sha256=qu1c2MzBKEflcU-QkWrGGf6aU8iYDgfeKPCcxxfdRkY,1565
37
- netbox_dns/filtersets/dnssec_policy.py,sha256=dezuuqC9ZzSL0fmEC8qCXLerQ0jbxggiYBuI-QlwcmQ,2239
36
+ netbox_dns/filtersets/dnssec_key_template.py,sha256=0lluEjVu4d41baiwD_tlJCUwC-y-zjUePj5Mh7TCBrQ,1569
37
+ netbox_dns/filtersets/dnssec_policy.py,sha256=n_Mn1MnR8zbBij42iw3HVaz9scvs8dIgipdqQgdMUGI,3075
38
38
  netbox_dns/filtersets/nameserver.py,sha256=7hk9Wh4v4-IHP44rQC4nhdvpYbDYNYYf-XZp6Yo72xE,1203
39
39
  netbox_dns/filtersets/record.py,sha256=Ao2666F6z435TXD_hV2dgItI0sWXlS-jyQ1TQZEL8Yc,3913
40
40
  netbox_dns/filtersets/record_template.py,sha256=wir5s2QWfDnw0M1wWnzJs9im5ok4l5cTbWPMBSM8aEg,1604
@@ -44,8 +44,8 @@ netbox_dns/filtersets/view.py,sha256=IlQz3k2J_N6eSbT9op0KOu3sKLrn-HTsJCcrIqoYgyY
44
44
  netbox_dns/filtersets/zone.py,sha256=LeFmuuRjUv105_gDMkxvuR1i7OABgptBl-zO8u7jUTQ,6833
45
45
  netbox_dns/filtersets/zone_template.py,sha256=bbbdc3-420GWR9DrL1MOV8InL1DztKA7I0N4tnr5hXk,4737
46
46
  netbox_dns/forms/__init__.py,sha256=tObkTOHw_6kVtEcwdyshN0Ql-8VGhwsgQw7owL_s2lI,273
47
- netbox_dns/forms/dnssec_key_template.py,sha256=7GAnYZrDe4VW_GYJY0zHwEjG0ecV6Qh317dbSpeKU3I,5217
48
- netbox_dns/forms/dnssec_policy.py,sha256=yDVdM7qPRVbFaz14CaT8-ns0zdpwF4YJ2jA0AruZIuQ,15603
47
+ netbox_dns/forms/dnssec_key_template.py,sha256=NK4Eahz0Qg1CTe4YXgKOJ4OReKyOClMKWaA3TjRqlT4,5221
48
+ netbox_dns/forms/dnssec_policy.py,sha256=O6u_EHG7y1R_LEXIixpvoS6y_6w3zYA1_tJpR_h2wM4,16954
49
49
  netbox_dns/forms/nameserver.py,sha256=GJe3ece4yIGwMtLZ6wQihBrJu1dk_ZSiwX-vSU0fRa0,3397
50
50
  netbox_dns/forms/record.py,sha256=wkl3YpbKfq0bH6U8atNYrYwrV-kNPRqG1PRQG3X1eHA,8389
51
51
  netbox_dns/forms/record_template.py,sha256=BdcDkQ5VPER3-nBKq6R1MINOG__H8yGa4uqdIqoLZuU,6474
@@ -58,9 +58,9 @@ netbox_dns/graphql/__init__.py,sha256=0xg_5d1PPFTadBOZo752t5sfZeLFrqs2jM51Rbf8ti
58
58
  netbox_dns/graphql/filters.py,sha256=Cyi8_Jz_5cMZfwsiZaAqsdWQM7Hsp-TmoZkvXOa_-S8,2237
59
59
  netbox_dns/graphql/schema.py,sha256=KlbJmlfQEqZhvb6-cYmq94mrMFcQoCh3MldaUD5eVV4,2904
60
60
  netbox_dns/graphql/types.py,sha256=LIXmzn2QbWU9PzS8Fa2X2hy7GqMiGz50HeNfAOfWzUA,10161
61
- netbox_dns/locale/de/LC_MESSAGES/django.mo,sha256=9NILKyHatRicFKDt1chIXIcPAi0oki5jmtZYJR27pLs,24329
61
+ netbox_dns/locale/de/LC_MESSAGES/django.mo,sha256=AegvIhFcWu4r6t5TCCheyD0S-SbCbPBGvnQ0rVSYYwI,23758
62
62
  netbox_dns/locale/en/LC_MESSAGES/django.mo,sha256=GDnSZkfHs3yjtTsll7dksEEej4B50F8pc9RGytZNubM,393
63
- netbox_dns/locale/fr/LC_MESSAGES/django.mo,sha256=Gvhfvo0LWlW7ga03q3m8QhbzpgYmCzKp_lida5ABcnc,25024
63
+ netbox_dns/locale/fr/LC_MESSAGES/django.mo,sha256=fzkzqnO1x9Yg4DKgqrQ6eKQLOnAgH7NEBsPje1mxQ68,24139
64
64
  netbox_dns/management/commands/cleanup_database.py,sha256=1-tAl0Sht80qaNZyfFyUW19Eh9gBUuc7GdbHN4aemGU,5935
65
65
  netbox_dns/management/commands/cleanup_rrset_ttl.py,sha256=UFRURLBcFeGHUS2lrYFv7UWIebjI72aG1EUQJt0XsXw,2046
66
66
  netbox_dns/management/commands/rebuild_dnssync.py,sha256=Tcl385u6kJTX47SvSyRzKm1RIx4nYRYCMcKr3uVnV60,1246
@@ -99,7 +99,7 @@ netbox_dns/mixins/__init__.py,sha256=LxTEfpod_RHCyMtnzDljv0_dwqp2z3Q6tqbXW8LTGD8
99
99
  netbox_dns/mixins/object_modification.py,sha256=AR64fU5f7g-scNAj9b54eSoS9dpjyOpqrxXVXPcOhY8,1807
100
100
  netbox_dns/models/__init__.py,sha256=CuwFENIVUv0FNMDlY18Am-mvN5kBGkPOGavCP0cle7c,273
101
101
  netbox_dns/models/dnssec_key_template.py,sha256=h6YniKfLx1ILAbvko6Mps-bhsI743uHIOiLgtfStZTI,2790
102
- netbox_dns/models/dnssec_policy.py,sha256=KV9_iFKmoURA5gelOAzNKIuO9iUFmhw8c_kwsyapKSU,5395
102
+ netbox_dns/models/dnssec_policy.py,sha256=eD13F_zTUgpP8fNGg0FssMNBUtpBRvkJiM6ZSYh1Pws,5466
103
103
  netbox_dns/models/nameserver.py,sha256=ivZpIVfgQLdDhrtqYPi-zRbygVgl3aff2FMsq1M3qA8,4044
104
104
  netbox_dns/models/record.py,sha256=ot2f5LVxj4ZjNanE29y-30iUK4YZS7-0-37ds3hWtjo,29716
105
105
  netbox_dns/models/record_template.py,sha256=kt-_sMFSMKmuKU8voVqz1-Lh7Wi7lPcA2ExPFQYLoxM,5345
@@ -156,11 +156,11 @@ netbox_dns/utilities/ipam_dnssync.py,sha256=_yuHoah_QN-opsZB51yGCkwjkij7nrmTgKHU
156
156
  netbox_dns/validators/__init__.py,sha256=X0hPZlC3VZcXMcvXKZ2_5LSoEJdXPNSBr4QtEIFSBJ0,94
157
157
  netbox_dns/validators/dns_name.py,sha256=Sil68Av49jfZPzgFMV_1qEcLnuuAWXmbxfAJPDXUsGg,3766
158
158
  netbox_dns/validators/dns_value.py,sha256=-mc62mth-hlbPUPe_RlCR7vo1KSD6_gQDXiE8rjB-Cc,5206
159
- netbox_dns/validators/dnssec.py,sha256=3_go92FfrDM6zb-0DZQtaOTqmqGu5bTlywuS6xkp4f4,4707
159
+ netbox_dns/validators/dnssec.py,sha256=FzWLXX3qwS9ZMaLWHaBJStwJ_D96wp7GI4LYoKjoegc,4909
160
160
  netbox_dns/validators/rfc2317.py,sha256=uKkwxpakiFFKdYA0qy8WSlEnbFwJD4MDw6gGV4F6skg,706
161
161
  netbox_dns/views/__init__.py,sha256=tObkTOHw_6kVtEcwdyshN0Ql-8VGhwsgQw7owL_s2lI,273
162
162
  netbox_dns/views/dnssec_key_template.py,sha256=TfBtODl7EzGvmC2NVDLd-P1zMalLCjClb9pKgPzIsBk,3050
163
- netbox_dns/views/dnssec_policy.py,sha256=cAuV-Ng0lpwHeXwBbBK9PMeBfmpwFmr1l4lQi2vSHPQ,4766
163
+ netbox_dns/views/dnssec_policy.py,sha256=7bQRr9X-7U4RM3I_9k-SEfX2_WoZnHlbGpgXTG_HH7M,4807
164
164
  netbox_dns/views/nameserver.py,sha256=6lHg8fqBjc_SoITzFj1FiRARpPF7nSn9knAZxe9x5Rg,3932
165
165
  netbox_dns/views/record.py,sha256=6tOTC7BbQ5XOC7wr94LjFMR3epOi47HP5qIETNvj5sE,6715
166
166
  netbox_dns/views/record_template.py,sha256=CbSyckBvyEvcZCeZgK3q0fJsa1_5HbwUflh_iM7JjH0,3134
@@ -169,8 +169,8 @@ netbox_dns/views/registration_contact.py,sha256=c9KrNkfFNsb55pL74A5rN1CNx32M82V6
169
169
  netbox_dns/views/view.py,sha256=VfrKaLC9D_KNZNmRyFVohRlmMlMbtblAuPgNg0LNyf8,3421
170
170
  netbox_dns/views/zone.py,sha256=W66Miyaf4RKW-8z5wMrerrtmHclhht3h-lPqTWFpiOw,7163
171
171
  netbox_dns/views/zone_template.py,sha256=IIW1lr6RQmhShtqJu6A6LnHdxdBrkkZQHxIDSTqQeyc,2705
172
- netbox_plugin_dns-1.2.7b2.dist-info/LICENSE,sha256=I3tDu11bZfhFm3EkV4zOD5TmWgLjnUNLEFwrdjniZYs,1112
173
- netbox_plugin_dns-1.2.7b2.dist-info/METADATA,sha256=8N_qhe9Z9UKIyFYI_ejC_24g7RfygkpBqiZnBJ23_ms,7625
174
- netbox_plugin_dns-1.2.7b2.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
175
- netbox_plugin_dns-1.2.7b2.dist-info/top_level.txt,sha256=sA1Rwl1mRKvMC6XHe2ylZ1GF-Q1NGd08XedK9Y4xZc4,11
176
- netbox_plugin_dns-1.2.7b2.dist-info/RECORD,,
172
+ netbox_plugin_dns-1.2.7b3.dist-info/LICENSE,sha256=I3tDu11bZfhFm3EkV4zOD5TmWgLjnUNLEFwrdjniZYs,1112
173
+ netbox_plugin_dns-1.2.7b3.dist-info/METADATA,sha256=V-yBL8EdajFb4lZzG6NqVN1sAlXyVgmwmuZqsd-lVuw,7625
174
+ netbox_plugin_dns-1.2.7b3.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
175
+ netbox_plugin_dns-1.2.7b3.dist-info/top_level.txt,sha256=sA1Rwl1mRKvMC6XHe2ylZ1GF-Q1NGd08XedK9Y4xZc4,11
176
+ netbox_plugin_dns-1.2.7b3.dist-info/RECORD,,