netbox-plugin-dns 1.1.7__py3-none-any.whl → 1.2.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.
- netbox_dns/__init__.py +9 -4
- netbox_dns/filtersets/zone.py +0 -14
- netbox_dns/migrations/0012_natural_ordering.py +88 -0
- netbox_dns/models/nameserver.py +1 -0
- netbox_dns/models/record.py +2 -0
- netbox_dns/models/record_template.py +2 -0
- netbox_dns/models/registrar.py +1 -0
- netbox_dns/models/registration_contact.py +2 -0
- netbox_dns/models/view.py +1 -0
- netbox_dns/models/zone.py +1 -0
- netbox_dns/models/zone_template.py +1 -0
- netbox_dns/navigation.py +9 -9
- netbox_dns/signals/ipam_dnssync.py +1 -19
- netbox_dns/template_content.py +4 -4
- netbox_dns/templates/netbox_dns/record.html +1 -1
- netbox_dns/urls.py +72 -0
- netbox_dns/views/nameserver.py +8 -0
- netbox_dns/views/record.py +9 -0
- netbox_dns/views/record_template.py +9 -0
- netbox_dns/views/registrar.py +12 -4
- netbox_dns/views/registration_contact.py +12 -4
- netbox_dns/views/view.py +13 -4
- netbox_dns/views/zone.py +8 -0
- netbox_dns/views/zone_template.py +9 -0
- {netbox_plugin_dns-1.1.7.dist-info → netbox_plugin_dns-1.2.0.dist-info}/METADATA +1 -1
- {netbox_plugin_dns-1.1.7.dist-info → netbox_plugin_dns-1.2.0.dist-info}/RECORD +29 -36
- netbox_dns/urls/__init__.py +0 -21
- netbox_dns/urls/nameserver.py +0 -45
- netbox_dns/urls/record.py +0 -29
- netbox_dns/urls/record_template.py +0 -56
- netbox_dns/urls/registrar.py +0 -39
- netbox_dns/urls/registration_contact.py +0 -60
- netbox_dns/urls/view.py +0 -31
- netbox_dns/urls/zone.py +0 -25
- netbox_dns/urls/zone_template.py +0 -47
- {netbox_plugin_dns-1.1.7.dist-info → netbox_plugin_dns-1.2.0.dist-info}/LICENSE +0 -0
- {netbox_plugin_dns-1.1.7.dist-info → netbox_plugin_dns-1.2.0.dist-info}/WHEEL +0 -0
- {netbox_plugin_dns-1.1.7.dist-info → netbox_plugin_dns-1.2.0.dist-info}/top_level.txt +0 -0
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.
|
|
10
|
+
__version__ = "1.2.0"
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def _check_list(setting):
|
|
@@ -19,8 +19,7 @@ class DNSConfig(PluginConfig):
|
|
|
19
19
|
name = "netbox_dns"
|
|
20
20
|
verbose_name = _("NetBox DNS")
|
|
21
21
|
description = _("NetBox plugin for DNS data")
|
|
22
|
-
min_version = "4.
|
|
23
|
-
max_version = "4.1.99"
|
|
22
|
+
min_version = "4.2.0"
|
|
24
23
|
version = __version__
|
|
25
24
|
author = "Peter Eckel"
|
|
26
25
|
author_email = "pete@netbox-dns.org"
|
|
@@ -50,7 +49,6 @@ class DNSConfig(PluginConfig):
|
|
|
50
49
|
"dnssync_minimum_zone_labels": 2,
|
|
51
50
|
"tolerate_characters_in_zone_labels": "",
|
|
52
51
|
"tolerate_underscores_in_labels": False,
|
|
53
|
-
"tolerate_underscores_in_hostnames": False, # Deprecated, will be removed in 1.2.0
|
|
54
52
|
"tolerate_leading_underscore_types": [
|
|
55
53
|
RecordTypeChoices.CNAME,
|
|
56
54
|
RecordTypeChoices.DNAME,
|
|
@@ -82,6 +80,13 @@ class DNSConfig(PluginConfig):
|
|
|
82
80
|
):
|
|
83
81
|
_check_list(setting)
|
|
84
82
|
|
|
83
|
+
# +
|
|
84
|
+
# TODO: Remove this workaround as soon as it's no longer required
|
|
85
|
+
#
|
|
86
|
+
# Force loading views so the register_model_view is run for all views
|
|
87
|
+
# -
|
|
88
|
+
import netbox_dns.views # noqa: F401
|
|
89
|
+
|
|
85
90
|
|
|
86
91
|
#
|
|
87
92
|
# Initialize plugin config
|
netbox_dns/filtersets/zone.py
CHANGED
|
@@ -29,20 +29,6 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
29
29
|
to_field_name="name",
|
|
30
30
|
label=_("View"),
|
|
31
31
|
)
|
|
32
|
-
# DEPRECATED: Remove in 1.1
|
|
33
|
-
name_server_id = django_filters.ModelMultipleChoiceFilter(
|
|
34
|
-
queryset=NameServer.objects.all(),
|
|
35
|
-
field_name="nameservers",
|
|
36
|
-
to_field_name="id",
|
|
37
|
-
label=_("Nameserver IDs"),
|
|
38
|
-
)
|
|
39
|
-
# DEPRECATED: Remove in 1.1
|
|
40
|
-
name_server = django_filters.ModelMultipleChoiceFilter(
|
|
41
|
-
queryset=NameServer.objects.all(),
|
|
42
|
-
field_name="nameservers__name",
|
|
43
|
-
to_field_name="name",
|
|
44
|
-
label=_("Nameservers"),
|
|
45
|
-
)
|
|
46
32
|
nameserver_id = django_filters.ModelMultipleChoiceFilter(
|
|
47
33
|
queryset=NameServer.objects.all(),
|
|
48
34
|
field_name="nameservers",
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Generated by Django 5.1.3 on 2024-12-02 16:26
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
("netbox_dns", "0011_rename_related_fields"),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AlterField(
|
|
14
|
+
model_name="nameserver",
|
|
15
|
+
name="name",
|
|
16
|
+
field=models.CharField(
|
|
17
|
+
db_collation="natural_sort", max_length=255, unique=True
|
|
18
|
+
),
|
|
19
|
+
),
|
|
20
|
+
migrations.AlterField(
|
|
21
|
+
model_name="record",
|
|
22
|
+
name="fqdn",
|
|
23
|
+
field=models.CharField(
|
|
24
|
+
blank=True,
|
|
25
|
+
db_collation="natural_sort",
|
|
26
|
+
default=None,
|
|
27
|
+
max_length=255,
|
|
28
|
+
null=True,
|
|
29
|
+
),
|
|
30
|
+
),
|
|
31
|
+
migrations.AlterField(
|
|
32
|
+
model_name="record",
|
|
33
|
+
name="name",
|
|
34
|
+
field=models.CharField(db_collation="natural_sort", max_length=255),
|
|
35
|
+
),
|
|
36
|
+
migrations.AlterField(
|
|
37
|
+
model_name="recordtemplate",
|
|
38
|
+
name="name",
|
|
39
|
+
field=models.CharField(
|
|
40
|
+
db_collation="natural_sort", max_length=200, unique=True
|
|
41
|
+
),
|
|
42
|
+
),
|
|
43
|
+
migrations.AlterField(
|
|
44
|
+
model_name="recordtemplate",
|
|
45
|
+
name="record_name",
|
|
46
|
+
field=models.CharField(db_collation="natural_sort", max_length=255),
|
|
47
|
+
),
|
|
48
|
+
migrations.AlterField(
|
|
49
|
+
model_name="registrar",
|
|
50
|
+
name="name",
|
|
51
|
+
field=models.CharField(
|
|
52
|
+
db_collation="natural_sort", max_length=255, unique=True
|
|
53
|
+
),
|
|
54
|
+
),
|
|
55
|
+
migrations.AlterField(
|
|
56
|
+
model_name="registrationcontact",
|
|
57
|
+
name="contact_id",
|
|
58
|
+
field=models.CharField(
|
|
59
|
+
db_collation="natural_sort", max_length=50, unique=True
|
|
60
|
+
),
|
|
61
|
+
),
|
|
62
|
+
migrations.AlterField(
|
|
63
|
+
model_name="registrationcontact",
|
|
64
|
+
name="name",
|
|
65
|
+
field=models.CharField(
|
|
66
|
+
blank=True, db_collation="natural_sort", max_length=100
|
|
67
|
+
),
|
|
68
|
+
),
|
|
69
|
+
migrations.AlterField(
|
|
70
|
+
model_name="view",
|
|
71
|
+
name="name",
|
|
72
|
+
field=models.CharField(
|
|
73
|
+
db_collation="natural_sort", max_length=255, unique=True
|
|
74
|
+
),
|
|
75
|
+
),
|
|
76
|
+
migrations.AlterField(
|
|
77
|
+
model_name="zone",
|
|
78
|
+
name="name",
|
|
79
|
+
field=models.CharField(db_collation="natural_sort", max_length=255),
|
|
80
|
+
),
|
|
81
|
+
migrations.AlterField(
|
|
82
|
+
model_name="zonetemplate",
|
|
83
|
+
name="name",
|
|
84
|
+
field=models.CharField(
|
|
85
|
+
db_collation="natural_sort", max_length=200, unique=True
|
|
86
|
+
),
|
|
87
|
+
),
|
|
88
|
+
]
|
netbox_dns/models/nameserver.py
CHANGED
netbox_dns/models/record.py
CHANGED
|
@@ -119,6 +119,7 @@ class Record(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
119
119
|
name = models.CharField(
|
|
120
120
|
verbose_name=_("Name"),
|
|
121
121
|
max_length=255,
|
|
122
|
+
db_collation="natural_sort",
|
|
122
123
|
)
|
|
123
124
|
zone = models.ForeignKey(
|
|
124
125
|
verbose_name=_("Zone"),
|
|
@@ -132,6 +133,7 @@ class Record(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
132
133
|
null=True,
|
|
133
134
|
blank=True,
|
|
134
135
|
default=None,
|
|
136
|
+
db_collation="natural_sort",
|
|
135
137
|
)
|
|
136
138
|
type = models.CharField(
|
|
137
139
|
verbose_name=_("Type"),
|
|
@@ -27,10 +27,12 @@ class RecordTemplate(NetBoxModel):
|
|
|
27
27
|
verbose_name=_("Template Name"),
|
|
28
28
|
unique=True,
|
|
29
29
|
max_length=200,
|
|
30
|
+
db_collation="natural_sort",
|
|
30
31
|
)
|
|
31
32
|
record_name = models.CharField(
|
|
32
33
|
verbose_name=_("Name"),
|
|
33
34
|
max_length=255,
|
|
35
|
+
db_collation="natural_sort",
|
|
34
36
|
)
|
|
35
37
|
description = models.CharField(
|
|
36
38
|
verbose_name=_("Description"),
|
netbox_dns/models/registrar.py
CHANGED
|
@@ -22,11 +22,13 @@ class RegistrationContact(NetBoxModel):
|
|
|
22
22
|
verbose_name=_("Contact ID"),
|
|
23
23
|
max_length=50,
|
|
24
24
|
unique=True,
|
|
25
|
+
db_collation="natural_sort",
|
|
25
26
|
)
|
|
26
27
|
name = models.CharField(
|
|
27
28
|
verbose_name=_("Name"),
|
|
28
29
|
blank=True,
|
|
29
30
|
max_length=100,
|
|
31
|
+
db_collation="natural_sort",
|
|
30
32
|
)
|
|
31
33
|
description = models.CharField(
|
|
32
34
|
verbose_name=_("Description"),
|
netbox_dns/models/view.py
CHANGED
netbox_dns/models/zone.py
CHANGED
netbox_dns/navigation.py
CHANGED
|
@@ -18,7 +18,7 @@ view_menu_item = PluginMenuItem(
|
|
|
18
18
|
permissions=["netbox_dns.add_view"],
|
|
19
19
|
),
|
|
20
20
|
PluginMenuButton(
|
|
21
|
-
"plugins:netbox_dns:
|
|
21
|
+
"plugins:netbox_dns:view_bulk_import",
|
|
22
22
|
_("Import"),
|
|
23
23
|
"mdi mdi-upload",
|
|
24
24
|
permissions=["netbox_dns.add_view"],
|
|
@@ -38,7 +38,7 @@ zone_menu_item = PluginMenuItem(
|
|
|
38
38
|
permissions=["netbox_dns.add_zone"],
|
|
39
39
|
),
|
|
40
40
|
PluginMenuButton(
|
|
41
|
-
"plugins:netbox_dns:
|
|
41
|
+
"plugins:netbox_dns:zone_bulk_import",
|
|
42
42
|
_("Import"),
|
|
43
43
|
"mdi mdi-upload",
|
|
44
44
|
permissions=["netbox_dns.add_zone"],
|
|
@@ -58,7 +58,7 @@ nameserver_menu_item = PluginMenuItem(
|
|
|
58
58
|
permissions=["netbox_dns.add_nameserver"],
|
|
59
59
|
),
|
|
60
60
|
PluginMenuButton(
|
|
61
|
-
"plugins:netbox_dns:
|
|
61
|
+
"plugins:netbox_dns:nameserver_bulk_import",
|
|
62
62
|
_("Import"),
|
|
63
63
|
"mdi mdi-upload",
|
|
64
64
|
permissions=["netbox_dns.add_nameserver"],
|
|
@@ -78,7 +78,7 @@ record_menu_item = PluginMenuItem(
|
|
|
78
78
|
permissions=["netbox_dns.add_record"],
|
|
79
79
|
),
|
|
80
80
|
PluginMenuButton(
|
|
81
|
-
"plugins:netbox_dns:
|
|
81
|
+
"plugins:netbox_dns:record_bulk_import",
|
|
82
82
|
_("Import"),
|
|
83
83
|
"mdi mdi-upload",
|
|
84
84
|
permissions=["netbox_dns.add_record"],
|
|
@@ -87,7 +87,7 @@ record_menu_item = PluginMenuItem(
|
|
|
87
87
|
)
|
|
88
88
|
|
|
89
89
|
managed_record_menu_item = PluginMenuItem(
|
|
90
|
-
link="plugins:netbox_dns:
|
|
90
|
+
link="plugins:netbox_dns:record_list_managed",
|
|
91
91
|
link_text=_("Managed Records"),
|
|
92
92
|
permissions=["netbox_dns.view_record"],
|
|
93
93
|
)
|
|
@@ -104,7 +104,7 @@ zonetemplate_menu_item = PluginMenuItem(
|
|
|
104
104
|
permissions=["netbox_dns.add_zonetemplate"],
|
|
105
105
|
),
|
|
106
106
|
PluginMenuButton(
|
|
107
|
-
"plugins:netbox_dns:
|
|
107
|
+
"plugins:netbox_dns:zonetemplate_bulk_import",
|
|
108
108
|
_("Import"),
|
|
109
109
|
"mdi mdi-upload",
|
|
110
110
|
permissions=["netbox_dns.add_zonetemplate"],
|
|
@@ -124,7 +124,7 @@ recordtemplate_menu_item = PluginMenuItem(
|
|
|
124
124
|
permissions=["netbox_dns.add_recordtemplate"],
|
|
125
125
|
),
|
|
126
126
|
PluginMenuButton(
|
|
127
|
-
"plugins:netbox_dns:
|
|
127
|
+
"plugins:netbox_dns:recordtemplate_bulk_import",
|
|
128
128
|
_("Import"),
|
|
129
129
|
"mdi mdi-upload",
|
|
130
130
|
permissions=["netbox_dns.add_recordtemplate"],
|
|
@@ -144,7 +144,7 @@ registrar_menu_item = PluginMenuItem(
|
|
|
144
144
|
permissions=["netbox_dns.add_registrar"],
|
|
145
145
|
),
|
|
146
146
|
PluginMenuButton(
|
|
147
|
-
"plugins:netbox_dns:
|
|
147
|
+
"plugins:netbox_dns:registrar_bulk_import",
|
|
148
148
|
_("Import"),
|
|
149
149
|
"mdi mdi-upload",
|
|
150
150
|
permissions=["netbox_dns.add_registrar"],
|
|
@@ -164,7 +164,7 @@ contact_menu_item = PluginMenuItem(
|
|
|
164
164
|
permissions=["netbox_dns.add_registrationcontact"],
|
|
165
165
|
),
|
|
166
166
|
PluginMenuButton(
|
|
167
|
-
"plugins:netbox_dns:
|
|
167
|
+
"plugins:netbox_dns:registrationcontact_bulk_import",
|
|
168
168
|
_("Import"),
|
|
169
169
|
"mdi mdi-upload",
|
|
170
170
|
permissions=["netbox_dns.add_registrationcontact"],
|
|
@@ -11,7 +11,6 @@ from netbox.signals import post_clean
|
|
|
11
11
|
from ipam.models import IPAddress, Prefix
|
|
12
12
|
from utilities.exceptions import AbortRequest
|
|
13
13
|
|
|
14
|
-
from netbox_dns.models import view as _view
|
|
15
14
|
from netbox_dns.utilities import (
|
|
16
15
|
check_dns_records,
|
|
17
16
|
check_record_permission,
|
|
@@ -203,26 +202,9 @@ def ipam_dnssync_prefix_pre_delete(instance, **kwargs):
|
|
|
203
202
|
update_dns_records(ip_address)
|
|
204
203
|
|
|
205
204
|
|
|
206
|
-
@receiver(m2m_changed, sender=
|
|
205
|
+
@receiver(m2m_changed, sender=Prefix.netbox_dns_views.through)
|
|
207
206
|
def ipam_dnssync_view_prefix_changed(**kwargs):
|
|
208
207
|
action = kwargs.get("action")
|
|
209
|
-
request = current_request.get()
|
|
210
|
-
|
|
211
|
-
# +
|
|
212
|
-
# Handle all post_add and post_remove signals except the ones directly
|
|
213
|
-
# handled by the pre_delete handler for the Prefix model.
|
|
214
|
-
#
|
|
215
|
-
# Yes. This IS ugly.
|
|
216
|
-
# -
|
|
217
|
-
if action not in ("post_add", "post_remove") or (
|
|
218
|
-
request is not None
|
|
219
|
-
and action == "post_remove"
|
|
220
|
-
and (
|
|
221
|
-
request.path.startswith("/ipam/prefixes/")
|
|
222
|
-
or request.path.startswith("/api/ipam/prefixes/")
|
|
223
|
-
)
|
|
224
|
-
):
|
|
225
|
-
return
|
|
226
208
|
|
|
227
209
|
check_view = action != "post_remove"
|
|
228
210
|
|
netbox_dns/template_content.py
CHANGED
|
@@ -15,7 +15,7 @@ from netbox_dns.utilities import get_views_by_prefix
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class RelatedDNSRecords(PluginTemplateExtension):
|
|
18
|
-
|
|
18
|
+
models = ("ipam.ipaddress",)
|
|
19
19
|
|
|
20
20
|
def right_page(self):
|
|
21
21
|
ip_address = self.context.get("object")
|
|
@@ -51,7 +51,7 @@ class RelatedDNSRecords(PluginTemplateExtension):
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
class RelatedDNSViews(PluginTemplateExtension):
|
|
54
|
-
|
|
54
|
+
models = ("ipam.prefix",)
|
|
55
55
|
|
|
56
56
|
def right_page(self):
|
|
57
57
|
prefix = self.context.get("object")
|
|
@@ -73,7 +73,7 @@ class RelatedDNSViews(PluginTemplateExtension):
|
|
|
73
73
|
"netbox_dns/view/button.html",
|
|
74
74
|
extra_context={
|
|
75
75
|
"url": reverse(
|
|
76
|
-
"
|
|
76
|
+
"ipam:prefix_views",
|
|
77
77
|
kwargs={"pk": self.context.get("object").pk},
|
|
78
78
|
),
|
|
79
79
|
},
|
|
@@ -81,7 +81,7 @@ class RelatedDNSViews(PluginTemplateExtension):
|
|
|
81
81
|
|
|
82
82
|
|
|
83
83
|
class IPRelatedDNSRecords(PluginTemplateExtension):
|
|
84
|
-
|
|
84
|
+
models = ("ipam.ipaddress",)
|
|
85
85
|
|
|
86
86
|
def right_page(self):
|
|
87
87
|
ip_address = self.context.get("object")
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
{% block breadcrumbs %}
|
|
16
16
|
{% if object.managed %}
|
|
17
17
|
<li class="breadcrumb-item">
|
|
18
|
-
<a href="{% url 'plugins:netbox_dns:
|
|
18
|
+
<a href="{% url 'plugins:netbox_dns:record_list_managed' %}">{% trans "Managed Records" %}</a>
|
|
19
19
|
</li>
|
|
20
20
|
{% else %}
|
|
21
21
|
{{ block.super }}
|
netbox_dns/urls.py
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
from django.urls import include, path
|
|
2
|
+
|
|
3
|
+
from utilities.urls import get_model_urls
|
|
4
|
+
|
|
5
|
+
app_name = "netbox_dns"
|
|
6
|
+
|
|
7
|
+
urlpatterns = (
|
|
8
|
+
path(
|
|
9
|
+
"nameservers/",
|
|
10
|
+
include(get_model_urls("netbox_dns", "nameserver", detail=False)),
|
|
11
|
+
),
|
|
12
|
+
path(
|
|
13
|
+
"nameservers/<int:pk>/",
|
|
14
|
+
include(get_model_urls("netbox_dns", "nameserver")),
|
|
15
|
+
),
|
|
16
|
+
path(
|
|
17
|
+
"recordtemplates/",
|
|
18
|
+
include(get_model_urls("netbox_dns", "recordtemplate", detail=False)),
|
|
19
|
+
),
|
|
20
|
+
path(
|
|
21
|
+
"recordtemplates/<int:pk>/",
|
|
22
|
+
include(get_model_urls("netbox_dns", "recordtemplate")),
|
|
23
|
+
),
|
|
24
|
+
path(
|
|
25
|
+
"records/",
|
|
26
|
+
include(get_model_urls("netbox_dns", "record", detail=False)),
|
|
27
|
+
),
|
|
28
|
+
path(
|
|
29
|
+
"records/<int:pk>/",
|
|
30
|
+
include(get_model_urls("netbox_dns", "record")),
|
|
31
|
+
),
|
|
32
|
+
path(
|
|
33
|
+
"registrars",
|
|
34
|
+
include(get_model_urls("netbox_dns", "registrar", detail=False)),
|
|
35
|
+
),
|
|
36
|
+
path(
|
|
37
|
+
"registrars/<int:pk>/",
|
|
38
|
+
include(get_model_urls("netbox_dns", "registrar")),
|
|
39
|
+
),
|
|
40
|
+
path(
|
|
41
|
+
"registrationcontacts/",
|
|
42
|
+
include(get_model_urls("netbox_dns", "registrationcontact", detail=False)),
|
|
43
|
+
),
|
|
44
|
+
path(
|
|
45
|
+
"registrationcontacts/<int:pk>/",
|
|
46
|
+
include(get_model_urls("netbox_dns", "registrationcontact")),
|
|
47
|
+
),
|
|
48
|
+
path(
|
|
49
|
+
"views/",
|
|
50
|
+
include(get_model_urls("netbox_dns", "view", detail=False)),
|
|
51
|
+
),
|
|
52
|
+
path(
|
|
53
|
+
"views/<int:pk>/",
|
|
54
|
+
include(get_model_urls("netbox_dns", "view")),
|
|
55
|
+
),
|
|
56
|
+
path(
|
|
57
|
+
"zonetemplates/",
|
|
58
|
+
include(get_model_urls("netbox_dns", "zonetemplate", detail=False)),
|
|
59
|
+
),
|
|
60
|
+
path(
|
|
61
|
+
"zonetemplates/<int:pk>/",
|
|
62
|
+
include(get_model_urls("netbox_dns", "zonetemplate")),
|
|
63
|
+
),
|
|
64
|
+
path(
|
|
65
|
+
"zones/",
|
|
66
|
+
include(get_model_urls("netbox_dns", "zone", detail=False)),
|
|
67
|
+
),
|
|
68
|
+
path(
|
|
69
|
+
"zones/<int:pk>/",
|
|
70
|
+
include(get_model_urls("netbox_dns", "zone")),
|
|
71
|
+
),
|
|
72
|
+
)
|
netbox_dns/views/nameserver.py
CHANGED
|
@@ -28,6 +28,7 @@ __all__ = (
|
|
|
28
28
|
)
|
|
29
29
|
|
|
30
30
|
|
|
31
|
+
@register_model_view(NameServer, "list", path="", detail=False)
|
|
31
32
|
class NameServerListView(generic.ObjectListView):
|
|
32
33
|
queryset = NameServer.objects.all()
|
|
33
34
|
filterset = NameServerFilterSet
|
|
@@ -35,6 +36,7 @@ class NameServerListView(generic.ObjectListView):
|
|
|
35
36
|
table = NameServerTable
|
|
36
37
|
|
|
37
38
|
|
|
39
|
+
@register_model_view(NameServer)
|
|
38
40
|
class NameServerView(generic.ObjectView):
|
|
39
41
|
queryset = NameServer.objects.prefetch_related("zones")
|
|
40
42
|
|
|
@@ -48,17 +50,21 @@ class NameServerView(generic.ObjectView):
|
|
|
48
50
|
return {}
|
|
49
51
|
|
|
50
52
|
|
|
53
|
+
@register_model_view(NameServer, "add", detail=False)
|
|
54
|
+
@register_model_view(NameServer, "edit")
|
|
51
55
|
class NameServerEditView(generic.ObjectEditView):
|
|
52
56
|
queryset = NameServer.objects.all()
|
|
53
57
|
form = NameServerForm
|
|
54
58
|
default_return_url = "plugins:netbox_dns:nameserver_list"
|
|
55
59
|
|
|
56
60
|
|
|
61
|
+
@register_model_view(NameServer, "delete")
|
|
57
62
|
class NameServerDeleteView(generic.ObjectDeleteView):
|
|
58
63
|
queryset = NameServer.objects.all()
|
|
59
64
|
default_return_url = "plugins:netbox_dns:nameserver_list"
|
|
60
65
|
|
|
61
66
|
|
|
67
|
+
@register_model_view(NameServer, "bulk_import", detail=False)
|
|
62
68
|
class NameServerBulkImportView(generic.BulkImportView):
|
|
63
69
|
queryset = NameServer.objects.all()
|
|
64
70
|
model_form = NameServerImportForm
|
|
@@ -66,6 +72,7 @@ class NameServerBulkImportView(generic.BulkImportView):
|
|
|
66
72
|
default_return_url = "plugins:netbox_dns:nameserver_list"
|
|
67
73
|
|
|
68
74
|
|
|
75
|
+
@register_model_view(NameServer, "bulk_edit", path="edit", detail=False)
|
|
69
76
|
class NameServerBulkEditView(generic.BulkEditView):
|
|
70
77
|
queryset = NameServer.objects.all()
|
|
71
78
|
filterset = NameServerFilterSet
|
|
@@ -73,6 +80,7 @@ class NameServerBulkEditView(generic.BulkEditView):
|
|
|
73
80
|
form = NameServerBulkEditForm
|
|
74
81
|
|
|
75
82
|
|
|
83
|
+
@register_model_view(NameServer, "bulk_delete", path="delete", detail=False)
|
|
76
84
|
class NameServerBulkDeleteView(generic.BulkDeleteView):
|
|
77
85
|
queryset = NameServer.objects.all()
|
|
78
86
|
table = NameServerTable
|
netbox_dns/views/record.py
CHANGED
|
@@ -35,6 +35,7 @@ class CNAMEWarning(Exception):
|
|
|
35
35
|
pass
|
|
36
36
|
|
|
37
37
|
|
|
38
|
+
@register_model_view(Record, "list", path="", detail=False)
|
|
38
39
|
class RecordListView(generic.ObjectListView):
|
|
39
40
|
queryset = Record.objects.filter(managed=False).prefetch_related(
|
|
40
41
|
"zone", "ptr_record"
|
|
@@ -44,6 +45,7 @@ class RecordListView(generic.ObjectListView):
|
|
|
44
45
|
table = RecordTable
|
|
45
46
|
|
|
46
47
|
|
|
48
|
+
@register_model_view(Record, "list_managed", path="managed", detail=False)
|
|
47
49
|
class ManagedRecordListView(generic.ObjectListView):
|
|
48
50
|
queryset = Record.objects.filter(managed=True).prefetch_related(
|
|
49
51
|
"ipam_ip_address", "address_record"
|
|
@@ -55,6 +57,7 @@ class ManagedRecordListView(generic.ObjectListView):
|
|
|
55
57
|
template_name = "netbox_dns/record/managed.html"
|
|
56
58
|
|
|
57
59
|
|
|
60
|
+
@register_model_view(Record)
|
|
58
61
|
class RecordView(generic.ObjectView):
|
|
59
62
|
queryset = Record.objects.prefetch_related("zone", "ptr_record")
|
|
60
63
|
|
|
@@ -158,6 +161,8 @@ class RecordView(generic.ObjectView):
|
|
|
158
161
|
return context
|
|
159
162
|
|
|
160
163
|
|
|
164
|
+
@register_model_view(Record, "add", detail=False)
|
|
165
|
+
@register_model_view(Record, "edit")
|
|
161
166
|
class RecordEditView(generic.ObjectEditView):
|
|
162
167
|
queryset = Record.objects.filter(managed=False).prefetch_related(
|
|
163
168
|
"zone", "ptr_record"
|
|
@@ -166,11 +171,13 @@ class RecordEditView(generic.ObjectEditView):
|
|
|
166
171
|
default_return_url = "plugins:netbox_dns:record_list"
|
|
167
172
|
|
|
168
173
|
|
|
174
|
+
@register_model_view(Record, "delete")
|
|
169
175
|
class RecordDeleteView(generic.ObjectDeleteView):
|
|
170
176
|
queryset = Record.objects.filter(managed=False)
|
|
171
177
|
default_return_url = "plugins:netbox_dns:record_list"
|
|
172
178
|
|
|
173
179
|
|
|
180
|
+
@register_model_view(Record, "bulk_import", detail=False)
|
|
174
181
|
class RecordBulkImportView(generic.BulkImportView):
|
|
175
182
|
queryset = Record.objects.filter(managed=False).prefetch_related(
|
|
176
183
|
"zone", "ptr_record"
|
|
@@ -180,6 +187,7 @@ class RecordBulkImportView(generic.BulkImportView):
|
|
|
180
187
|
default_return_url = "plugins:netbox_dns:record_list"
|
|
181
188
|
|
|
182
189
|
|
|
190
|
+
@register_model_view(Record, "bulk_edit", path="edit", detail=False)
|
|
183
191
|
class RecordBulkEditView(generic.BulkEditView):
|
|
184
192
|
queryset = Record.objects.filter(managed=False).prefetch_related("zone")
|
|
185
193
|
filterset = RecordFilterSet
|
|
@@ -187,6 +195,7 @@ class RecordBulkEditView(generic.BulkEditView):
|
|
|
187
195
|
form = RecordBulkEditForm
|
|
188
196
|
|
|
189
197
|
|
|
198
|
+
@register_model_view(Record, "bulk_delete", path="delete", detail=False)
|
|
190
199
|
class RecordBulkDeleteView(generic.BulkDeleteView):
|
|
191
200
|
queryset = Record.objects.filter(managed=False)
|
|
192
201
|
table = RecordTable
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from dns import name as dns_name
|
|
2
2
|
|
|
3
3
|
from netbox.views import generic
|
|
4
|
+
from utilities.views import register_model_view
|
|
4
5
|
|
|
5
6
|
from netbox_dns.filtersets import RecordTemplateFilterSet
|
|
6
7
|
from netbox_dns.forms import (
|
|
@@ -25,6 +26,7 @@ __all__ = (
|
|
|
25
26
|
)
|
|
26
27
|
|
|
27
28
|
|
|
29
|
+
@register_model_view(RecordTemplate, "list", path="", detail=False)
|
|
28
30
|
class RecordTemplateListView(generic.ObjectListView):
|
|
29
31
|
queryset = RecordTemplate.objects.all()
|
|
30
32
|
filterset = RecordTemplateFilterSet
|
|
@@ -32,6 +34,7 @@ class RecordTemplateListView(generic.ObjectListView):
|
|
|
32
34
|
table = RecordTemplateTable
|
|
33
35
|
|
|
34
36
|
|
|
37
|
+
@register_model_view(RecordTemplate)
|
|
35
38
|
class RecordTemplateView(generic.ObjectView):
|
|
36
39
|
queryset = RecordTemplate.objects.all()
|
|
37
40
|
|
|
@@ -54,17 +57,21 @@ class RecordTemplateView(generic.ObjectView):
|
|
|
54
57
|
return context
|
|
55
58
|
|
|
56
59
|
|
|
60
|
+
@register_model_view(RecordTemplate, "add", detail=False)
|
|
61
|
+
@register_model_view(RecordTemplate, "edit")
|
|
57
62
|
class RecordTemplateEditView(generic.ObjectEditView):
|
|
58
63
|
queryset = RecordTemplate.objects.all()
|
|
59
64
|
form = RecordTemplateForm
|
|
60
65
|
default_return_url = "plugins:netbox_dns:recordtemplate_list"
|
|
61
66
|
|
|
62
67
|
|
|
68
|
+
@register_model_view(RecordTemplate, "delete")
|
|
63
69
|
class RecordTemplateDeleteView(generic.ObjectDeleteView):
|
|
64
70
|
queryset = RecordTemplate.objects.all()
|
|
65
71
|
default_return_url = "plugins:netbox_dns:recordtemplate_list"
|
|
66
72
|
|
|
67
73
|
|
|
74
|
+
@register_model_view(RecordTemplate, "bulk_import", detail=False)
|
|
68
75
|
class RecordTemplateBulkImportView(generic.BulkImportView):
|
|
69
76
|
queryset = RecordTemplate.objects.all()
|
|
70
77
|
model_form = RecordTemplateImportForm
|
|
@@ -72,6 +79,7 @@ class RecordTemplateBulkImportView(generic.BulkImportView):
|
|
|
72
79
|
default_return_url = "plugins:netbox_dns:recordtemplate_list"
|
|
73
80
|
|
|
74
81
|
|
|
82
|
+
@register_model_view(RecordTemplate, "bulk_edit", path="edit", detail=False)
|
|
75
83
|
class RecordTemplateBulkEditView(generic.BulkEditView):
|
|
76
84
|
queryset = RecordTemplate.objects.all()
|
|
77
85
|
filterset = RecordTemplateFilterSet
|
|
@@ -79,6 +87,7 @@ class RecordTemplateBulkEditView(generic.BulkEditView):
|
|
|
79
87
|
form = RecordTemplateBulkEditForm
|
|
80
88
|
|
|
81
89
|
|
|
90
|
+
@register_model_view(RecordTemplate, "bulk_delete", path="delete", detail=False)
|
|
82
91
|
class RecordTemplateBulkDeleteView(generic.BulkDeleteView):
|
|
83
92
|
queryset = RecordTemplate.objects.all()
|
|
84
93
|
table = RecordTemplateTable
|