netbox-plugin-dns 1.1.2__py3-none-any.whl → 1.1.4__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 +14 -6
- netbox_dns/api/nested_serializers.py +3 -2
- netbox_dns/api/serializers_/nameserver.py +2 -1
- netbox_dns/api/serializers_/record.py +5 -4
- netbox_dns/api/serializers_/record_template.py +2 -1
- netbox_dns/api/serializers_/view.py +2 -1
- netbox_dns/api/serializers_/zone.py +12 -11
- netbox_dns/api/serializers_/zone_template.py +8 -7
- netbox_dns/api/views.py +9 -4
- netbox_dns/choices/record.py +4 -2
- netbox_dns/choices/zone.py +8 -4
- netbox_dns/fields/address.py +5 -22
- netbox_dns/fields/network.py +2 -1
- netbox_dns/fields/rfc2317.py +7 -3
- netbox_dns/filtersets/nameserver.py +3 -2
- netbox_dns/filtersets/record.py +14 -9
- netbox_dns/filtersets/record_template.py +3 -2
- netbox_dns/filtersets/view.py +3 -2
- netbox_dns/filtersets/zone.py +24 -22
- netbox_dns/filtersets/zone_template.py +15 -14
- netbox_dns/forms/nameserver.py +41 -17
- netbox_dns/forms/record.py +61 -32
- netbox_dns/forms/record_template.py +49 -28
- netbox_dns/forms/registrar.py +21 -17
- netbox_dns/forms/registration_contact.py +37 -25
- netbox_dns/forms/view.py +49 -27
- netbox_dns/forms/zone.py +173 -120
- netbox_dns/forms/zone_template.py +53 -43
- netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
- netbox_dns/locale/en/LC_MESSAGES/django.mo +0 -0
- netbox_dns/management/commands/rebuild_dnssync.py +14 -1
- netbox_dns/models/nameserver.py +6 -2
- netbox_dns/models/record.py +74 -40
- netbox_dns/models/record_template.py +17 -9
- netbox_dns/models/registrar.py +11 -7
- netbox_dns/models/registration_contact.py +23 -11
- netbox_dns/models/view.py +15 -6
- netbox_dns/models/zone.py +83 -50
- netbox_dns/models/zone_template.py +12 -10
- netbox_dns/navigation.py +30 -28
- netbox_dns/signals/ipam_dnssync.py +21 -14
- netbox_dns/tables/ipam_dnssync.py +2 -1
- netbox_dns/tables/nameserver.py +2 -0
- netbox_dns/tables/record.py +21 -11
- netbox_dns/tables/record_template.py +12 -5
- netbox_dns/tables/registrar.py +2 -0
- netbox_dns/tables/registration_contact.py +2 -0
- netbox_dns/tables/view.py +3 -1
- netbox_dns/tables/zone.py +15 -2
- netbox_dns/tables/zone_template.py +7 -0
- netbox_dns/templates/netbox_dns/nameserver.html +6 -5
- netbox_dns/templates/netbox_dns/record/managed.html +2 -1
- netbox_dns/templates/netbox_dns/record/related.html +26 -14
- netbox_dns/templates/netbox_dns/record.html +39 -20
- netbox_dns/templates/netbox_dns/recordtemplate.html +27 -15
- netbox_dns/templates/netbox_dns/registrar.html +11 -10
- netbox_dns/templates/netbox_dns/registrationcontact.html +16 -15
- netbox_dns/templates/netbox_dns/view/button.html +2 -1
- netbox_dns/templates/netbox_dns/view/prefix.html +7 -4
- netbox_dns/templates/netbox_dns/view/related.html +26 -10
- netbox_dns/templates/netbox_dns/view.html +11 -14
- netbox_dns/templates/netbox_dns/zone/base.html +2 -1
- netbox_dns/templates/netbox_dns/zone/child.html +3 -2
- netbox_dns/templates/netbox_dns/zone/record.html +3 -2
- netbox_dns/templates/netbox_dns/zone/registration.html +8 -7
- netbox_dns/templates/netbox_dns/zone.html +28 -30
- netbox_dns/templates/netbox_dns/zonetemplate.html +27 -17
- netbox_dns/utilities/ipam_dnssync.py +15 -4
- netbox_dns/validators/dns_name.py +11 -4
- netbox_dns/validators/dns_value.py +55 -9
- netbox_dns/validators/rfc2317.py +6 -3
- netbox_dns/views/nameserver.py +4 -2
- netbox_dns/views/record_template.py +4 -3
- netbox_dns/views/registrar.py +3 -1
- netbox_dns/views/registration_contact.py +2 -1
- netbox_dns/views/view.py +2 -1
- netbox_dns/views/zone.py +6 -4
- netbox_dns/views/zone_template.py +8 -7
- {netbox_plugin_dns-1.1.2.dist-info → netbox_plugin_dns-1.1.4.dist-info}/METADATA +2 -2
- netbox_plugin_dns-1.1.4.dist-info/RECORD +150 -0
- netbox_plugin_dns-1.1.2.dist-info/RECORD +0 -148
- {netbox_plugin_dns-1.1.2.dist-info → netbox_plugin_dns-1.1.4.dist-info}/LICENSE +0 -0
- {netbox_plugin_dns-1.1.2.dist-info → netbox_plugin_dns-1.1.4.dist-info}/WHEEL +0 -0
- {netbox_plugin_dns-1.1.2.dist-info → netbox_plugin_dns-1.1.4.dist-info}/top_level.txt +0 -0
netbox_dns/filtersets/zone.py
CHANGED
|
@@ -2,6 +2,8 @@ import netaddr
|
|
|
2
2
|
|
|
3
3
|
import django_filters
|
|
4
4
|
from django.db.models import Q
|
|
5
|
+
from django.utils.translation import gettext as _
|
|
6
|
+
from django.utils.translation import pgettext as _p
|
|
5
7
|
|
|
6
8
|
from netbox.filtersets import NetBoxModelFilterSet
|
|
7
9
|
from tenancy.filtersets import TenancyFilterSet
|
|
@@ -20,69 +22,69 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
20
22
|
)
|
|
21
23
|
view_id = django_filters.ModelMultipleChoiceFilter(
|
|
22
24
|
queryset=View.objects.all(),
|
|
23
|
-
label="View ID",
|
|
25
|
+
label=_("View ID"),
|
|
24
26
|
)
|
|
25
27
|
view = django_filters.ModelMultipleChoiceFilter(
|
|
26
28
|
queryset=View.objects.all(),
|
|
27
29
|
field_name="view__name",
|
|
28
30
|
to_field_name="name",
|
|
29
|
-
label="View",
|
|
31
|
+
label=_p("DNS", "View"),
|
|
30
32
|
)
|
|
31
33
|
# DEPRECATED: Remove in 1.1
|
|
32
34
|
name_server_id = django_filters.ModelMultipleChoiceFilter(
|
|
33
35
|
queryset=NameServer.objects.all(),
|
|
34
36
|
field_name="nameservers",
|
|
35
37
|
to_field_name="id",
|
|
36
|
-
label="Nameserver IDs",
|
|
38
|
+
label=_("Nameserver IDs"),
|
|
37
39
|
)
|
|
38
40
|
# DEPRECATED: Remove in 1.1
|
|
39
41
|
name_server = django_filters.ModelMultipleChoiceFilter(
|
|
40
42
|
queryset=NameServer.objects.all(),
|
|
41
43
|
field_name="nameservers__name",
|
|
42
44
|
to_field_name="name",
|
|
43
|
-
label="Nameservers",
|
|
45
|
+
label=_("Nameservers"),
|
|
44
46
|
)
|
|
45
47
|
nameserver_id = django_filters.ModelMultipleChoiceFilter(
|
|
46
48
|
queryset=NameServer.objects.all(),
|
|
47
49
|
field_name="nameservers",
|
|
48
50
|
to_field_name="id",
|
|
49
|
-
label="Nameservers ID",
|
|
51
|
+
label=_("Nameservers ID"),
|
|
50
52
|
)
|
|
51
53
|
nameserver = django_filters.ModelMultipleChoiceFilter(
|
|
52
54
|
queryset=NameServer.objects.all(),
|
|
53
55
|
field_name="nameservers__name",
|
|
54
56
|
to_field_name="name",
|
|
55
|
-
label="Nameserver",
|
|
57
|
+
label=_("Nameserver"),
|
|
56
58
|
)
|
|
57
59
|
soa_mname_id = django_filters.ModelMultipleChoiceFilter(
|
|
58
60
|
queryset=NameServer.objects.all(),
|
|
59
|
-
label="SOA MName ID",
|
|
61
|
+
label=_("SOA MName ID"),
|
|
60
62
|
)
|
|
61
63
|
soa_mname = django_filters.ModelMultipleChoiceFilter(
|
|
62
64
|
queryset=NameServer.objects.all(),
|
|
63
65
|
field_name="soa_mname__name",
|
|
64
66
|
to_field_name="name",
|
|
65
|
-
label="SOA MName",
|
|
67
|
+
label=_("SOA MName"),
|
|
66
68
|
)
|
|
67
69
|
arpa_network = MultiValueCharFilter(
|
|
68
70
|
method="filter_arpa_network",
|
|
69
|
-
label="ARPA Network",
|
|
71
|
+
label=_("ARPA Network"),
|
|
70
72
|
)
|
|
71
73
|
rfc2317_prefix = MultiValueCharFilter(
|
|
72
74
|
method="filter_rfc2317_prefix",
|
|
73
|
-
label="RFC2317 Prefix",
|
|
75
|
+
label=_("RFC2317 Prefix"),
|
|
74
76
|
)
|
|
75
77
|
rfc2317_parent_zone_id = django_filters.ModelMultipleChoiceFilter(
|
|
76
78
|
queryset=Zone.objects.all(),
|
|
77
79
|
field_name="rfc2317_parent_zone",
|
|
78
80
|
to_field_name="id",
|
|
79
|
-
label="RFC2317 Parent Zone",
|
|
81
|
+
label=_("RFC2317 Parent Zone"),
|
|
80
82
|
)
|
|
81
83
|
rfc2317_parent_zone = django_filters.ModelMultipleChoiceFilter(
|
|
82
84
|
queryset=Zone.objects.all(),
|
|
83
85
|
field_name="rfc2317_parent_zone__name",
|
|
84
86
|
to_field_name="name",
|
|
85
|
-
label="RFC2317 Parent Zone",
|
|
87
|
+
label=_("RFC2317 Parent Zone"),
|
|
86
88
|
)
|
|
87
89
|
registrar_id = django_filters.ModelMultipleChoiceFilter(
|
|
88
90
|
queryset=Registrar.objects.all(),
|
|
@@ -92,50 +94,50 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
92
94
|
queryset=Registrar.objects.all(),
|
|
93
95
|
field_name="registrar__name",
|
|
94
96
|
to_field_name="name",
|
|
95
|
-
label="Registrar",
|
|
97
|
+
label=_("Registrar"),
|
|
96
98
|
)
|
|
97
99
|
registrant_id = django_filters.ModelMultipleChoiceFilter(
|
|
98
100
|
queryset=RegistrationContact.objects.all(),
|
|
99
|
-
label="Registrant ID",
|
|
101
|
+
label=_("Registrant ID"),
|
|
100
102
|
)
|
|
101
103
|
registrant = django_filters.ModelMultipleChoiceFilter(
|
|
102
104
|
queryset=RegistrationContact.objects.all(),
|
|
103
105
|
field_name="registrant__contact_id",
|
|
104
106
|
to_field_name="contact_id",
|
|
105
|
-
label="Registrant",
|
|
107
|
+
label=_("Registrant"),
|
|
106
108
|
)
|
|
107
109
|
admin_c_id = django_filters.ModelMultipleChoiceFilter(
|
|
108
110
|
queryset=RegistrationContact.objects.all(),
|
|
109
|
-
label="Administrative
|
|
111
|
+
label=_("Administrative Contact ID"),
|
|
110
112
|
)
|
|
111
113
|
admin_c = django_filters.ModelMultipleChoiceFilter(
|
|
112
114
|
queryset=RegistrationContact.objects.all(),
|
|
113
115
|
field_name="admin_c__contact_id",
|
|
114
116
|
to_field_name="contact_id",
|
|
115
|
-
label="Administrative
|
|
117
|
+
label=_("Administrative Contact"),
|
|
116
118
|
)
|
|
117
119
|
tech_c_id = django_filters.ModelMultipleChoiceFilter(
|
|
118
120
|
queryset=RegistrationContact.objects.all(),
|
|
119
|
-
label="Technical
|
|
121
|
+
label=_("Technical Contact ID"),
|
|
120
122
|
)
|
|
121
123
|
tech_c = django_filters.ModelMultipleChoiceFilter(
|
|
122
124
|
queryset=RegistrationContact.objects.all(),
|
|
123
125
|
field_name="tech_c__contact_id",
|
|
124
126
|
to_field_name="contact_id",
|
|
125
|
-
label="Technical
|
|
127
|
+
label=_("Technical Contact"),
|
|
126
128
|
)
|
|
127
129
|
billing_c_id = django_filters.ModelMultipleChoiceFilter(
|
|
128
130
|
queryset=RegistrationContact.objects.all(),
|
|
129
|
-
label="Billing
|
|
131
|
+
label=_("Billing Contact ID"),
|
|
130
132
|
)
|
|
131
133
|
billing_c = django_filters.ModelMultipleChoiceFilter(
|
|
132
134
|
queryset=RegistrationContact.objects.all(),
|
|
133
135
|
field_name="billing_c__contact_id",
|
|
134
136
|
to_field_name="contact_id",
|
|
135
|
-
label="Billing
|
|
137
|
+
label=_("Billing Contact"),
|
|
136
138
|
)
|
|
137
139
|
active = django_filters.BooleanFilter(
|
|
138
|
-
label="Zone is active",
|
|
140
|
+
label=_("Zone is active"),
|
|
139
141
|
)
|
|
140
142
|
|
|
141
143
|
class Meta:
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import django_filters
|
|
2
2
|
|
|
3
3
|
from django.db.models import Q
|
|
4
|
+
from django.utils.translation import gettext as _
|
|
4
5
|
|
|
5
6
|
from netbox.filtersets import NetBoxModelFilterSet
|
|
6
7
|
from tenancy.filtersets import TenancyFilterSet
|
|
@@ -22,75 +23,75 @@ class ZoneTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
22
23
|
queryset=RecordTemplate.objects.all(),
|
|
23
24
|
field_name="record_templates",
|
|
24
25
|
to_field_name="id",
|
|
25
|
-
label="Record Template ID",
|
|
26
|
+
label=_("Record Template ID"),
|
|
26
27
|
)
|
|
27
28
|
record_template = django_filters.ModelMultipleChoiceFilter(
|
|
28
29
|
queryset=RecordTemplate.objects.all(),
|
|
29
30
|
field_name="record_templates__name",
|
|
30
31
|
to_field_name="name",
|
|
31
|
-
label="Record Template",
|
|
32
|
+
label=_("Record Template"),
|
|
32
33
|
)
|
|
33
34
|
nameserver_id = django_filters.ModelMultipleChoiceFilter(
|
|
34
35
|
queryset=NameServer.objects.all(),
|
|
35
36
|
field_name="nameservers",
|
|
36
37
|
to_field_name="id",
|
|
37
|
-
label="Nameservers ID",
|
|
38
|
+
label=_("Nameservers ID"),
|
|
38
39
|
)
|
|
39
40
|
nameserver = django_filters.ModelMultipleChoiceFilter(
|
|
40
41
|
queryset=NameServer.objects.all(),
|
|
41
42
|
field_name="nameservers__name",
|
|
42
43
|
to_field_name="name",
|
|
43
|
-
label="Nameserver",
|
|
44
|
+
label=_("Nameserver"),
|
|
44
45
|
)
|
|
45
46
|
registrar_id = django_filters.ModelMultipleChoiceFilter(
|
|
46
47
|
queryset=Registrar.objects.all(),
|
|
47
|
-
label="Registrar ID",
|
|
48
|
+
label=_("Registrar ID"),
|
|
48
49
|
)
|
|
49
50
|
registrar = django_filters.ModelMultipleChoiceFilter(
|
|
50
51
|
queryset=Registrar.objects.all(),
|
|
51
52
|
field_name="registrar__name",
|
|
52
53
|
to_field_name="name",
|
|
53
|
-
label="Registrar",
|
|
54
|
+
label=_("Registrar"),
|
|
54
55
|
)
|
|
55
56
|
registrant_id = django_filters.ModelMultipleChoiceFilter(
|
|
56
57
|
queryset=RegistrationContact.objects.all(),
|
|
57
|
-
label="Registrant ID",
|
|
58
|
+
label=_("Registrant ID"),
|
|
58
59
|
)
|
|
59
60
|
registrant = django_filters.ModelMultipleChoiceFilter(
|
|
60
61
|
queryset=RegistrationContact.objects.all(),
|
|
61
62
|
field_name="registrant__contact_id",
|
|
62
63
|
to_field_name="contact_id",
|
|
63
|
-
label="Registrant",
|
|
64
|
+
label=_("Registrant"),
|
|
64
65
|
)
|
|
65
66
|
admin_c_id = django_filters.ModelMultipleChoiceFilter(
|
|
66
67
|
queryset=RegistrationContact.objects.all(),
|
|
67
|
-
label="Administrative
|
|
68
|
+
label=_("Administrative Contact ID"),
|
|
68
69
|
)
|
|
69
70
|
admin_c = django_filters.ModelMultipleChoiceFilter(
|
|
70
71
|
queryset=RegistrationContact.objects.all(),
|
|
71
72
|
field_name="admin_c__contact_id",
|
|
72
73
|
to_field_name="contact_id",
|
|
73
|
-
label="Administrative
|
|
74
|
+
label=_("Administrative Contact"),
|
|
74
75
|
)
|
|
75
76
|
tech_c_id = django_filters.ModelMultipleChoiceFilter(
|
|
76
77
|
queryset=RegistrationContact.objects.all(),
|
|
77
|
-
label="Technical
|
|
78
|
+
label=_("Technical Contact ID"),
|
|
78
79
|
)
|
|
79
80
|
tech_c = django_filters.ModelMultipleChoiceFilter(
|
|
80
81
|
queryset=RegistrationContact.objects.all(),
|
|
81
82
|
field_name="tech_c__contact_id",
|
|
82
83
|
to_field_name="contact_id",
|
|
83
|
-
label="Technical
|
|
84
|
+
label=_("Technical Contact"),
|
|
84
85
|
)
|
|
85
86
|
billing_c_id = django_filters.ModelMultipleChoiceFilter(
|
|
86
87
|
queryset=RegistrationContact.objects.all(),
|
|
87
|
-
label="Billing
|
|
88
|
+
label=_("Billing Contact ID"),
|
|
88
89
|
)
|
|
89
90
|
billing_c = django_filters.ModelMultipleChoiceFilter(
|
|
90
91
|
queryset=RegistrationContact.objects.all(),
|
|
91
92
|
field_name="billing_c__contact_id",
|
|
92
93
|
to_field_name="contact_id",
|
|
93
|
-
label="Billing
|
|
94
|
+
label=_("Billing Contact"),
|
|
94
95
|
)
|
|
95
96
|
|
|
96
97
|
class Meta:
|
netbox_dns/forms/nameserver.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from django import forms
|
|
2
|
+
from django.utils.translation import gettext_lazy as _
|
|
2
3
|
|
|
3
4
|
from netbox.forms import (
|
|
4
5
|
NetBoxModelBulkEditForm,
|
|
@@ -14,7 +15,7 @@ from utilities.forms.fields import (
|
|
|
14
15
|
DynamicModelMultipleChoiceField,
|
|
15
16
|
)
|
|
16
17
|
from utilities.forms.rendering import FieldSet
|
|
17
|
-
from tenancy.models import Tenant
|
|
18
|
+
from tenancy.models import Tenant, TenantGroup
|
|
18
19
|
from tenancy.forms import TenancyForm, TenancyFilterForm
|
|
19
20
|
|
|
20
21
|
from netbox_dns.models import NameServer, Zone
|
|
@@ -37,51 +38,61 @@ class NameServerForm(TenancyForm, NetBoxModelForm):
|
|
|
37
38
|
if initial_name:
|
|
38
39
|
self.initial["name"] = name_to_unicode(initial_name)
|
|
39
40
|
|
|
41
|
+
name = forms.CharField(
|
|
42
|
+
required=True,
|
|
43
|
+
label=_("Name"),
|
|
44
|
+
)
|
|
45
|
+
|
|
40
46
|
fieldsets = (
|
|
41
|
-
FieldSet("name", "description", name="Nameserver"),
|
|
42
|
-
FieldSet("tenant_group", "tenant", name="Tenancy"),
|
|
43
|
-
FieldSet("tags", name="Tags"),
|
|
47
|
+
FieldSet("name", "description", name=_("Nameserver")),
|
|
48
|
+
FieldSet("tenant_group", "tenant", name=_("Tenancy")),
|
|
49
|
+
FieldSet("tags", name=_("Tags")),
|
|
44
50
|
)
|
|
45
51
|
|
|
46
52
|
class Meta:
|
|
47
53
|
model = NameServer
|
|
48
|
-
fields = ("name", "description", "tags", "tenant")
|
|
54
|
+
fields = ("name", "description", "tags", "tenant_group", "tenant")
|
|
49
55
|
|
|
50
56
|
|
|
51
57
|
class NameServerFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
52
58
|
model = NameServer
|
|
53
59
|
|
|
60
|
+
name = forms.CharField(
|
|
61
|
+
required=False,
|
|
62
|
+
label=_("Name"),
|
|
63
|
+
)
|
|
54
64
|
zone_id = DynamicModelMultipleChoiceField(
|
|
55
65
|
queryset=Zone.objects.all(),
|
|
56
66
|
required=False,
|
|
57
|
-
label="Zones",
|
|
67
|
+
label=_("Zones"),
|
|
58
68
|
)
|
|
59
69
|
soa_zone_id = DynamicModelMultipleChoiceField(
|
|
60
70
|
queryset=Zone.objects.all(),
|
|
61
71
|
required=False,
|
|
62
|
-
label="SOA Zones",
|
|
63
|
-
)
|
|
64
|
-
name = forms.CharField(
|
|
65
|
-
required=False,
|
|
72
|
+
label=_("SOA Zones"),
|
|
66
73
|
)
|
|
67
74
|
description = forms.CharField(
|
|
68
75
|
required=False,
|
|
76
|
+
label=_("Description"),
|
|
69
77
|
)
|
|
70
78
|
tag = TagFilterField(NameServer)
|
|
71
79
|
|
|
72
80
|
fieldsets = (
|
|
73
81
|
FieldSet("q", "filter_id", "tag"),
|
|
74
|
-
FieldSet("name", "zone_id", "soa_zone_id", "description", name="Attributes"),
|
|
75
|
-
FieldSet("tenant_group_id", "tenant_id", name="Tenancy"),
|
|
82
|
+
FieldSet("name", "zone_id", "soa_zone_id", "description", name=_("Attributes")),
|
|
83
|
+
FieldSet("tenant_group_id", "tenant_id", name=_("Tenancy")),
|
|
76
84
|
)
|
|
77
85
|
|
|
78
86
|
|
|
79
87
|
class NameServerImportForm(NetBoxModelImportForm):
|
|
88
|
+
name = forms.CharField(
|
|
89
|
+
label=_("Name"),
|
|
90
|
+
)
|
|
80
91
|
tenant = CSVModelChoiceField(
|
|
81
92
|
queryset=Tenant.objects.all(),
|
|
82
93
|
to_field_name="name",
|
|
83
94
|
required=False,
|
|
84
|
-
|
|
95
|
+
label=_("Tenant"),
|
|
85
96
|
)
|
|
86
97
|
|
|
87
98
|
class Meta:
|
|
@@ -98,16 +109,29 @@ class NameServerImportForm(NetBoxModelImportForm):
|
|
|
98
109
|
class NameServerBulkEditForm(NetBoxModelBulkEditForm):
|
|
99
110
|
model = NameServer
|
|
100
111
|
|
|
101
|
-
description = forms.CharField(
|
|
102
|
-
|
|
112
|
+
description = forms.CharField(
|
|
113
|
+
max_length=200,
|
|
114
|
+
required=False,
|
|
115
|
+
label=_("Description"),
|
|
116
|
+
)
|
|
117
|
+
tenant_group = DynamicModelChoiceField(
|
|
118
|
+
queryset=TenantGroup.objects.all(),
|
|
119
|
+
required=False,
|
|
120
|
+
label=_("Tenant Group"),
|
|
121
|
+
)
|
|
122
|
+
tenant = DynamicModelChoiceField(
|
|
123
|
+
queryset=Tenant.objects.all(),
|
|
124
|
+
required=False,
|
|
125
|
+
label=_("Tenant"),
|
|
126
|
+
)
|
|
103
127
|
|
|
104
128
|
fieldsets = (
|
|
105
129
|
FieldSet(
|
|
106
|
-
"name",
|
|
107
130
|
"description",
|
|
131
|
+
"tenant_group",
|
|
108
132
|
"tenant",
|
|
109
133
|
"tags",
|
|
110
|
-
name="Attributes",
|
|
134
|
+
name=_("Attributes"),
|
|
111
135
|
),
|
|
112
136
|
)
|
|
113
137
|
|
netbox_dns/forms/record.py
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
from django import forms
|
|
2
|
+
from django.utils.translation import gettext_lazy as _
|
|
3
|
+
from django.utils.translation import pgettext_lazy as _p
|
|
2
4
|
|
|
3
5
|
from netbox.forms import (
|
|
4
6
|
NetBoxModelBulkEditForm,
|
|
@@ -16,7 +18,7 @@ from utilities.forms.fields import (
|
|
|
16
18
|
from utilities.forms.widgets import BulkEditNullBooleanSelect
|
|
17
19
|
from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, add_blank_choice
|
|
18
20
|
from utilities.forms.rendering import FieldSet
|
|
19
|
-
from tenancy.models import Tenant
|
|
21
|
+
from tenancy.models import Tenant, TenantGroup
|
|
20
22
|
from tenancy.forms import TenancyForm, TenancyFilterForm
|
|
21
23
|
|
|
22
24
|
from netbox_dns.models import View, Zone, Record
|
|
@@ -36,12 +38,6 @@ class RecordForm(TenancyForm, NetBoxModelForm):
|
|
|
36
38
|
def __init__(self, *args, **kwargs):
|
|
37
39
|
super().__init__(*args, **kwargs)
|
|
38
40
|
|
|
39
|
-
initial_zone_id = self.initial.get("zone")
|
|
40
|
-
if initial_zone_id is not None:
|
|
41
|
-
self.initial["view"] = Zone.objects.get(pk=initial_zone_id).view
|
|
42
|
-
else:
|
|
43
|
-
self.initial["view"] = View.get_default_view()
|
|
44
|
-
|
|
45
41
|
initial_name = self.initial.get("name")
|
|
46
42
|
if initial_name:
|
|
47
43
|
self.initial["name"] = name_to_unicode(initial_name)
|
|
@@ -49,7 +45,10 @@ class RecordForm(TenancyForm, NetBoxModelForm):
|
|
|
49
45
|
view = DynamicModelChoiceField(
|
|
50
46
|
queryset=View.objects.all(),
|
|
51
47
|
required=False,
|
|
52
|
-
|
|
48
|
+
initial_params={
|
|
49
|
+
"zone": "$zone",
|
|
50
|
+
},
|
|
51
|
+
label=_p("DNS", "View"),
|
|
53
52
|
)
|
|
54
53
|
zone = DynamicModelChoiceField(
|
|
55
54
|
queryset=Zone.objects.all(),
|
|
@@ -57,16 +56,16 @@ class RecordForm(TenancyForm, NetBoxModelForm):
|
|
|
57
56
|
query_params={
|
|
58
57
|
"view_id": "$view",
|
|
59
58
|
},
|
|
60
|
-
label="Zone",
|
|
59
|
+
label=_("Zone"),
|
|
61
60
|
)
|
|
62
61
|
|
|
63
62
|
disable_ptr = forms.BooleanField(
|
|
64
|
-
label="Disable PTR",
|
|
65
63
|
required=False,
|
|
64
|
+
label=_("Disable PTR"),
|
|
66
65
|
)
|
|
67
66
|
ttl = forms.IntegerField(
|
|
68
67
|
required=False,
|
|
69
|
-
label="TTL",
|
|
68
|
+
label=_("TTL"),
|
|
70
69
|
)
|
|
71
70
|
|
|
72
71
|
fieldsets = (
|
|
@@ -82,8 +81,8 @@ class RecordForm(TenancyForm, NetBoxModelForm):
|
|
|
82
81
|
"description",
|
|
83
82
|
name="Record",
|
|
84
83
|
),
|
|
85
|
-
FieldSet("tenant_group", "tenant", name="Tenancy"),
|
|
86
|
-
FieldSet("tags", name="Tags"),
|
|
84
|
+
FieldSet("tenant_group", "tenant", name=_("Tenancy")),
|
|
85
|
+
FieldSet("tags", name=_("Tags")),
|
|
87
86
|
)
|
|
88
87
|
|
|
89
88
|
class Meta:
|
|
@@ -98,8 +97,9 @@ class RecordForm(TenancyForm, NetBoxModelForm):
|
|
|
98
97
|
"ttl",
|
|
99
98
|
"disable_ptr",
|
|
100
99
|
"description",
|
|
101
|
-
"
|
|
100
|
+
"tenant_group",
|
|
102
101
|
"tenant",
|
|
102
|
+
"tags",
|
|
103
103
|
)
|
|
104
104
|
|
|
105
105
|
|
|
@@ -108,6 +108,7 @@ class RecordFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
108
108
|
fieldsets = (
|
|
109
109
|
FieldSet("q", "filter_id", "tag"),
|
|
110
110
|
FieldSet(
|
|
111
|
+
"view_id",
|
|
111
112
|
"zone_id",
|
|
112
113
|
"name",
|
|
113
114
|
"fqdn",
|
|
@@ -115,42 +116,61 @@ class RecordFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
115
116
|
"value",
|
|
116
117
|
"disable_ptr",
|
|
117
118
|
"status",
|
|
119
|
+
"active",
|
|
118
120
|
"description",
|
|
119
|
-
name="Attributes",
|
|
121
|
+
name=_("Attributes"),
|
|
120
122
|
),
|
|
121
|
-
FieldSet("tenant_group_id", "tenant_id", name="Tenancy"),
|
|
123
|
+
FieldSet("tenant_group_id", "tenant_id", name=_("Tenancy")),
|
|
122
124
|
)
|
|
123
125
|
|
|
124
126
|
type = forms.MultipleChoiceField(
|
|
125
127
|
choices=RecordTypeChoices,
|
|
126
128
|
required=False,
|
|
129
|
+
label=_("Type"),
|
|
127
130
|
)
|
|
128
131
|
name = forms.CharField(
|
|
129
132
|
required=False,
|
|
133
|
+
label=_("Name"),
|
|
130
134
|
)
|
|
131
135
|
fqdn = forms.CharField(
|
|
132
136
|
required=False,
|
|
133
|
-
label="FQDN",
|
|
137
|
+
label=_("FQDN"),
|
|
134
138
|
)
|
|
135
139
|
value = forms.CharField(
|
|
136
140
|
required=False,
|
|
141
|
+
label=_("Value"),
|
|
137
142
|
)
|
|
138
143
|
disable_ptr = forms.NullBooleanField(
|
|
139
144
|
required=False,
|
|
140
|
-
label="Disable PTR",
|
|
141
145
|
widget=forms.Select(choices=BOOLEAN_WITH_BLANK_CHOICES),
|
|
146
|
+
label=_("Disable PTR"),
|
|
142
147
|
)
|
|
143
148
|
status = forms.MultipleChoiceField(
|
|
144
149
|
choices=RecordStatusChoices,
|
|
145
150
|
required=False,
|
|
151
|
+
label=_("Status"),
|
|
152
|
+
)
|
|
153
|
+
view_id = DynamicModelMultipleChoiceField(
|
|
154
|
+
queryset=View.objects.all(),
|
|
155
|
+
required=False,
|
|
156
|
+
label=_("View"),
|
|
146
157
|
)
|
|
147
158
|
zone_id = DynamicModelMultipleChoiceField(
|
|
148
159
|
queryset=Zone.objects.all(),
|
|
149
160
|
required=False,
|
|
150
|
-
label="Zone",
|
|
161
|
+
label=_("Zone"),
|
|
162
|
+
query_params={
|
|
163
|
+
"view_id": "$view_id",
|
|
164
|
+
},
|
|
165
|
+
)
|
|
166
|
+
active = forms.NullBooleanField(
|
|
167
|
+
required=False,
|
|
168
|
+
widget=forms.Select(choices=BOOLEAN_WITH_BLANK_CHOICES),
|
|
169
|
+
label=_("Active"),
|
|
151
170
|
)
|
|
152
171
|
description = forms.CharField(
|
|
153
172
|
required=False,
|
|
173
|
+
label=_("Description"),
|
|
154
174
|
)
|
|
155
175
|
tag = TagFilterField(Record)
|
|
156
176
|
|
|
@@ -177,38 +197,37 @@ class RecordImportForm(NetBoxModelImportForm):
|
|
|
177
197
|
queryset=Zone.objects.all(),
|
|
178
198
|
to_field_name="name",
|
|
179
199
|
required=True,
|
|
180
|
-
|
|
200
|
+
label=_("Zone"),
|
|
181
201
|
)
|
|
182
202
|
view = CSVModelChoiceField(
|
|
183
203
|
queryset=View.objects.all(),
|
|
184
204
|
to_field_name="name",
|
|
185
205
|
required=False,
|
|
186
|
-
|
|
206
|
+
label=_p("DNS", "View"),
|
|
187
207
|
)
|
|
188
208
|
type = CSVChoiceField(
|
|
189
209
|
choices=RecordTypeChoices,
|
|
190
210
|
required=True,
|
|
191
|
-
|
|
211
|
+
label=_("Type"),
|
|
192
212
|
)
|
|
193
213
|
status = CSVChoiceField(
|
|
194
214
|
choices=RecordStatusChoices,
|
|
195
215
|
required=False,
|
|
196
|
-
|
|
216
|
+
label=_("Status"),
|
|
197
217
|
)
|
|
198
218
|
ttl = forms.IntegerField(
|
|
199
219
|
required=False,
|
|
200
|
-
|
|
220
|
+
label=_("TTL"),
|
|
201
221
|
)
|
|
202
222
|
disable_ptr = forms.BooleanField(
|
|
203
223
|
required=False,
|
|
204
|
-
label="Disable PTR",
|
|
205
|
-
help_text="Disable generation of a PTR record",
|
|
224
|
+
label=_("Disable PTR"),
|
|
206
225
|
)
|
|
207
226
|
tenant = CSVModelChoiceField(
|
|
208
227
|
queryset=Tenant.objects.all(),
|
|
209
228
|
to_field_name="name",
|
|
210
229
|
required=False,
|
|
211
|
-
|
|
230
|
+
label=_("Tenant"),
|
|
212
231
|
)
|
|
213
232
|
|
|
214
233
|
def is_valid(self):
|
|
@@ -242,35 +261,45 @@ class RecordBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
242
261
|
zone = DynamicModelChoiceField(
|
|
243
262
|
queryset=Zone.objects.all(),
|
|
244
263
|
required=False,
|
|
264
|
+
label=_("Zone"),
|
|
245
265
|
)
|
|
246
266
|
type = forms.ChoiceField(
|
|
247
267
|
choices=add_blank_choice(RecordTypeChoices),
|
|
248
268
|
required=False,
|
|
269
|
+
label=_("Type"),
|
|
249
270
|
)
|
|
250
271
|
value = forms.CharField(
|
|
251
272
|
required=False,
|
|
252
|
-
label="Value",
|
|
273
|
+
label=_("Value"),
|
|
253
274
|
)
|
|
254
275
|
status = forms.ChoiceField(
|
|
255
276
|
choices=add_blank_choice(RecordStatusChoices),
|
|
256
277
|
required=False,
|
|
278
|
+
label=_("Status"),
|
|
257
279
|
)
|
|
258
280
|
ttl = forms.IntegerField(
|
|
259
281
|
required=False,
|
|
260
|
-
label="TTL",
|
|
282
|
+
label=_("TTL"),
|
|
261
283
|
)
|
|
262
284
|
disable_ptr = forms.NullBooleanField(
|
|
263
285
|
required=False,
|
|
264
|
-
label="Disable PTR",
|
|
265
286
|
widget=BulkEditNullBooleanSelect(),
|
|
287
|
+
label=_("Disable PTR"),
|
|
266
288
|
)
|
|
267
289
|
description = forms.CharField(
|
|
268
290
|
max_length=200,
|
|
269
291
|
required=False,
|
|
292
|
+
label=_("Description"),
|
|
293
|
+
)
|
|
294
|
+
tenant_group = DynamicModelChoiceField(
|
|
295
|
+
queryset=TenantGroup.objects.all(),
|
|
296
|
+
required=False,
|
|
297
|
+
label=_("Tenant Group"),
|
|
270
298
|
)
|
|
271
299
|
tenant = DynamicModelChoiceField(
|
|
272
300
|
queryset=Tenant.objects.all(),
|
|
273
301
|
required=False,
|
|
302
|
+
label=_("Tenant"),
|
|
274
303
|
)
|
|
275
304
|
|
|
276
305
|
fieldsets = (
|
|
@@ -282,8 +311,8 @@ class RecordBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
282
311
|
"ttl",
|
|
283
312
|
"disable_ptr",
|
|
284
313
|
"description",
|
|
285
|
-
name="Attributes",
|
|
314
|
+
name=_("Attributes"),
|
|
286
315
|
),
|
|
287
|
-
FieldSet("tenant_group", "tenant", name="Tenancy"),
|
|
316
|
+
FieldSet("tenant_group", "tenant", name=_("Tenancy")),
|
|
288
317
|
)
|
|
289
318
|
nullable_fields = ("description", "ttl", "tenant")
|