netbox-plugin-dns 1.1.2__py3-none-any.whl → 1.1.3__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 +6 -5
- 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 +6 -4
- netbox_dns/fields/address.py +2 -1
- 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 +10 -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 +43 -26
- 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 +167 -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 +63 -30
- netbox_dns/models/record_template.py +16 -8
- 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 +65 -43
- 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 +9 -4
- 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.3.dist-info}/METADATA +1 -1
- netbox_plugin_dns-1.1.3.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.3.dist-info}/LICENSE +0 -0
- {netbox_plugin_dns-1.1.2.dist-info → netbox_plugin_dns-1.1.3.dist-info}/WHEEL +0 -0
- {netbox_plugin_dns-1.1.2.dist-info → netbox_plugin_dns-1.1.3.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
|
|
@@ -49,7 +51,7 @@ class RecordForm(TenancyForm, NetBoxModelForm):
|
|
|
49
51
|
view = DynamicModelChoiceField(
|
|
50
52
|
queryset=View.objects.all(),
|
|
51
53
|
required=False,
|
|
52
|
-
label="View",
|
|
54
|
+
label=_p("DNS", "View"),
|
|
53
55
|
)
|
|
54
56
|
zone = DynamicModelChoiceField(
|
|
55
57
|
queryset=Zone.objects.all(),
|
|
@@ -57,16 +59,16 @@ class RecordForm(TenancyForm, NetBoxModelForm):
|
|
|
57
59
|
query_params={
|
|
58
60
|
"view_id": "$view",
|
|
59
61
|
},
|
|
60
|
-
label="Zone",
|
|
62
|
+
label=_("Zone"),
|
|
61
63
|
)
|
|
62
64
|
|
|
63
65
|
disable_ptr = forms.BooleanField(
|
|
64
|
-
label="Disable PTR",
|
|
65
66
|
required=False,
|
|
67
|
+
label=_("Disable PTR"),
|
|
66
68
|
)
|
|
67
69
|
ttl = forms.IntegerField(
|
|
68
70
|
required=False,
|
|
69
|
-
label="TTL",
|
|
71
|
+
label=_("TTL"),
|
|
70
72
|
)
|
|
71
73
|
|
|
72
74
|
fieldsets = (
|
|
@@ -82,8 +84,8 @@ class RecordForm(TenancyForm, NetBoxModelForm):
|
|
|
82
84
|
"description",
|
|
83
85
|
name="Record",
|
|
84
86
|
),
|
|
85
|
-
FieldSet("tenant_group", "tenant", name="Tenancy"),
|
|
86
|
-
FieldSet("tags", name="Tags"),
|
|
87
|
+
FieldSet("tenant_group", "tenant", name=_("Tenancy")),
|
|
88
|
+
FieldSet("tags", name=_("Tags")),
|
|
87
89
|
)
|
|
88
90
|
|
|
89
91
|
class Meta:
|
|
@@ -98,8 +100,9 @@ class RecordForm(TenancyForm, NetBoxModelForm):
|
|
|
98
100
|
"ttl",
|
|
99
101
|
"disable_ptr",
|
|
100
102
|
"description",
|
|
101
|
-
"
|
|
103
|
+
"tenant_group",
|
|
102
104
|
"tenant",
|
|
105
|
+
"tags",
|
|
103
106
|
)
|
|
104
107
|
|
|
105
108
|
|
|
@@ -116,41 +119,46 @@ class RecordFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
116
119
|
"disable_ptr",
|
|
117
120
|
"status",
|
|
118
121
|
"description",
|
|
119
|
-
name="Attributes",
|
|
122
|
+
name=_("Attributes"),
|
|
120
123
|
),
|
|
121
|
-
FieldSet("tenant_group_id", "tenant_id", name="Tenancy"),
|
|
124
|
+
FieldSet("tenant_group_id", "tenant_id", name=_("Tenancy")),
|
|
122
125
|
)
|
|
123
126
|
|
|
124
127
|
type = forms.MultipleChoiceField(
|
|
125
128
|
choices=RecordTypeChoices,
|
|
126
129
|
required=False,
|
|
130
|
+
label=_("Type"),
|
|
127
131
|
)
|
|
128
132
|
name = forms.CharField(
|
|
129
133
|
required=False,
|
|
134
|
+
label=_("Name"),
|
|
130
135
|
)
|
|
131
136
|
fqdn = forms.CharField(
|
|
132
137
|
required=False,
|
|
133
|
-
label="FQDN",
|
|
138
|
+
label=_("FQDN"),
|
|
134
139
|
)
|
|
135
140
|
value = forms.CharField(
|
|
136
141
|
required=False,
|
|
142
|
+
label=_("Value"),
|
|
137
143
|
)
|
|
138
144
|
disable_ptr = forms.NullBooleanField(
|
|
139
145
|
required=False,
|
|
140
|
-
label="Disable PTR",
|
|
141
146
|
widget=forms.Select(choices=BOOLEAN_WITH_BLANK_CHOICES),
|
|
147
|
+
label=_("Disable PTR"),
|
|
142
148
|
)
|
|
143
149
|
status = forms.MultipleChoiceField(
|
|
144
150
|
choices=RecordStatusChoices,
|
|
145
151
|
required=False,
|
|
152
|
+
label=_("Status"),
|
|
146
153
|
)
|
|
147
154
|
zone_id = DynamicModelMultipleChoiceField(
|
|
148
155
|
queryset=Zone.objects.all(),
|
|
149
156
|
required=False,
|
|
150
|
-
label="Zone",
|
|
157
|
+
label=_("Zone"),
|
|
151
158
|
)
|
|
152
159
|
description = forms.CharField(
|
|
153
160
|
required=False,
|
|
161
|
+
label=_("Description"),
|
|
154
162
|
)
|
|
155
163
|
tag = TagFilterField(Record)
|
|
156
164
|
|
|
@@ -177,38 +185,37 @@ class RecordImportForm(NetBoxModelImportForm):
|
|
|
177
185
|
queryset=Zone.objects.all(),
|
|
178
186
|
to_field_name="name",
|
|
179
187
|
required=True,
|
|
180
|
-
|
|
188
|
+
label=_("Zone"),
|
|
181
189
|
)
|
|
182
190
|
view = CSVModelChoiceField(
|
|
183
191
|
queryset=View.objects.all(),
|
|
184
192
|
to_field_name="name",
|
|
185
193
|
required=False,
|
|
186
|
-
|
|
194
|
+
label=_p("DNS", "View"),
|
|
187
195
|
)
|
|
188
196
|
type = CSVChoiceField(
|
|
189
197
|
choices=RecordTypeChoices,
|
|
190
198
|
required=True,
|
|
191
|
-
|
|
199
|
+
label=_("Type"),
|
|
192
200
|
)
|
|
193
201
|
status = CSVChoiceField(
|
|
194
202
|
choices=RecordStatusChoices,
|
|
195
203
|
required=False,
|
|
196
|
-
|
|
204
|
+
label=_("Status"),
|
|
197
205
|
)
|
|
198
206
|
ttl = forms.IntegerField(
|
|
199
207
|
required=False,
|
|
200
|
-
|
|
208
|
+
label=_("TTL"),
|
|
201
209
|
)
|
|
202
210
|
disable_ptr = forms.BooleanField(
|
|
203
211
|
required=False,
|
|
204
|
-
label="Disable PTR",
|
|
205
|
-
help_text="Disable generation of a PTR record",
|
|
212
|
+
label=_("Disable PTR"),
|
|
206
213
|
)
|
|
207
214
|
tenant = CSVModelChoiceField(
|
|
208
215
|
queryset=Tenant.objects.all(),
|
|
209
216
|
to_field_name="name",
|
|
210
217
|
required=False,
|
|
211
|
-
|
|
218
|
+
label=_("Tenant"),
|
|
212
219
|
)
|
|
213
220
|
|
|
214
221
|
def is_valid(self):
|
|
@@ -242,35 +249,45 @@ class RecordBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
242
249
|
zone = DynamicModelChoiceField(
|
|
243
250
|
queryset=Zone.objects.all(),
|
|
244
251
|
required=False,
|
|
252
|
+
label=_("Zone"),
|
|
245
253
|
)
|
|
246
254
|
type = forms.ChoiceField(
|
|
247
255
|
choices=add_blank_choice(RecordTypeChoices),
|
|
248
256
|
required=False,
|
|
257
|
+
label=_("Type"),
|
|
249
258
|
)
|
|
250
259
|
value = forms.CharField(
|
|
251
260
|
required=False,
|
|
252
|
-
label="Value",
|
|
261
|
+
label=_("Value"),
|
|
253
262
|
)
|
|
254
263
|
status = forms.ChoiceField(
|
|
255
264
|
choices=add_blank_choice(RecordStatusChoices),
|
|
256
265
|
required=False,
|
|
266
|
+
label=_("Status"),
|
|
257
267
|
)
|
|
258
268
|
ttl = forms.IntegerField(
|
|
259
269
|
required=False,
|
|
260
|
-
label="TTL",
|
|
270
|
+
label=_("TTL"),
|
|
261
271
|
)
|
|
262
272
|
disable_ptr = forms.NullBooleanField(
|
|
263
273
|
required=False,
|
|
264
|
-
label="Disable PTR",
|
|
265
274
|
widget=BulkEditNullBooleanSelect(),
|
|
275
|
+
label=_("Disable PTR"),
|
|
266
276
|
)
|
|
267
277
|
description = forms.CharField(
|
|
268
278
|
max_length=200,
|
|
269
279
|
required=False,
|
|
280
|
+
label=_("Description"),
|
|
281
|
+
)
|
|
282
|
+
tenant_group = DynamicModelChoiceField(
|
|
283
|
+
queryset=TenantGroup.objects.all(),
|
|
284
|
+
required=False,
|
|
285
|
+
label=_("Tenant Group"),
|
|
270
286
|
)
|
|
271
287
|
tenant = DynamicModelChoiceField(
|
|
272
288
|
queryset=Tenant.objects.all(),
|
|
273
289
|
required=False,
|
|
290
|
+
label=_("Tenant"),
|
|
274
291
|
)
|
|
275
292
|
|
|
276
293
|
fieldsets = (
|
|
@@ -282,8 +299,8 @@ class RecordBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
282
299
|
"ttl",
|
|
283
300
|
"disable_ptr",
|
|
284
301
|
"description",
|
|
285
|
-
name="Attributes",
|
|
302
|
+
name=_("Attributes"),
|
|
286
303
|
),
|
|
287
|
-
FieldSet("tenant_group", "tenant", name="Tenancy"),
|
|
304
|
+
FieldSet("tenant_group", "tenant", name=_("Tenancy")),
|
|
288
305
|
)
|
|
289
306
|
nullable_fields = ("description", "ttl", "tenant")
|