netbox-plugin-dns 0.22.8__py3-none-any.whl → 1.0.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 +4 -15
- netbox_dns/api/nested_serializers.py +4 -60
- netbox_dns/api/serializers.py +8 -314
- netbox_dns/api/serializers_/__init__.py +0 -0
- netbox_dns/api/serializers_/contact.py +37 -0
- netbox_dns/api/serializers_/nameserver.py +39 -0
- netbox_dns/api/serializers_/record.py +90 -0
- netbox_dns/api/serializers_/registrar.py +31 -0
- netbox_dns/api/serializers_/view.py +34 -0
- netbox_dns/api/serializers_/zone.py +159 -0
- netbox_dns/api/views.py +13 -13
- netbox_dns/fields/network.py +21 -22
- netbox_dns/fields/rfc2317.py +3 -3
- netbox_dns/{filters → filtersets}/contact.py +2 -1
- netbox_dns/filtersets/nameserver.py +37 -0
- netbox_dns/{filters → filtersets}/record.py +51 -6
- netbox_dns/{filters → filtersets}/registrar.py +2 -1
- netbox_dns/{filters → filtersets}/view.py +2 -2
- netbox_dns/filtersets/zone.py +205 -0
- netbox_dns/forms/contact.py +61 -33
- netbox_dns/forms/nameserver.py +21 -8
- netbox_dns/forms/record.py +65 -38
- netbox_dns/forms/registrar.py +45 -15
- netbox_dns/forms/view.py +23 -9
- netbox_dns/forms/zone.py +182 -188
- netbox_dns/graphql/__init__.py +17 -27
- netbox_dns/graphql/filters.py +49 -0
- netbox_dns/graphql/schema.py +66 -7
- netbox_dns/graphql/types.py +143 -0
- netbox_dns/management/commands/cleanup_database.py +0 -4
- netbox_dns/management/commands/cleanup_rrset_ttl.py +3 -5
- netbox_dns/management/commands/setup_coupling.py +15 -15
- netbox_dns/management/commands/update_soa.py +1 -1
- netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -27
- netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +558 -0
- netbox_dns/migrations/{0013_add_nameserver_zone_record_description.py → 0002_contact_description_registrar_description.py} +4 -9
- netbox_dns/migrations/0003_default_view.py +15 -0
- netbox_dns/migrations/0004_create_and_assign_default_view.py +26 -0
- netbox_dns/migrations/0005_alter_zone_view_not_null.py +18 -0
- netbox_dns/migrations/0020_netbox_3_4.py +1 -1
- netbox_dns/models/contact.py +6 -1
- netbox_dns/models/nameserver.py +5 -1
- netbox_dns/models/record.py +32 -34
- netbox_dns/models/registrar.py +5 -1
- netbox_dns/models/view.py +54 -1
- netbox_dns/models/zone.py +68 -54
- netbox_dns/navigation.py +1 -15
- netbox_dns/signals/ipam_coupling.py +3 -9
- netbox_dns/tables/contact.py +1 -0
- netbox_dns/tables/nameserver.py +0 -2
- netbox_dns/tables/registrar.py +1 -0
- netbox_dns/tables/view.py +9 -2
- netbox_dns/template_content.py +4 -8
- netbox_dns/templates/netbox_dns/contact.html +60 -56
- netbox_dns/templates/netbox_dns/nameserver.html +27 -27
- netbox_dns/templates/netbox_dns/record.html +92 -94
- netbox_dns/templates/netbox_dns/registrar.html +38 -36
- netbox_dns/templates/netbox_dns/view.html +25 -21
- netbox_dns/templates/netbox_dns/zone/base.html +5 -3
- netbox_dns/templates/netbox_dns/zone/child.html +3 -3
- netbox_dns/templates/netbox_dns/zone/managed_record.html +1 -1
- netbox_dns/templates/netbox_dns/zone/record.html +3 -3
- netbox_dns/templates/netbox_dns/zone/registration.html +26 -27
- netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +1 -1
- netbox_dns/templates/netbox_dns/zone.html +148 -149
- netbox_dns/urls/__init__.py +17 -0
- netbox_dns/urls/contact.py +51 -0
- netbox_dns/urls/nameserver.py +69 -0
- netbox_dns/urls/record.py +41 -0
- netbox_dns/urls/registrar.py +63 -0
- netbox_dns/urls/view.py +39 -0
- netbox_dns/urls/zone.py +57 -0
- netbox_dns/utilities/__init__.py +1 -6
- netbox_dns/utilities/ipam_coupling.py +2 -7
- netbox_dns/validators/dns_name.py +4 -9
- netbox_dns/validators/rfc2317.py +2 -2
- netbox_dns/views/contact.py +4 -4
- netbox_dns/views/nameserver.py +5 -5
- netbox_dns/views/record.py +14 -29
- netbox_dns/views/registrar.py +4 -4
- netbox_dns/views/view.py +4 -4
- netbox_dns/views/zone.py +7 -8
- {netbox_plugin_dns-0.22.8.dist-info → netbox_plugin_dns-1.0.0.dist-info}/METADATA +27 -13
- netbox_plugin_dns-1.0.0.dist-info/RECORD +112 -0
- netbox_dns/filters/nameserver.py +0 -18
- netbox_dns/filters/zone.py +0 -112
- netbox_dns/graphql/contact.py +0 -19
- netbox_dns/graphql/nameserver.py +0 -19
- netbox_dns/graphql/record.py +0 -19
- netbox_dns/graphql/registrar.py +0 -19
- netbox_dns/graphql/view.py +0 -19
- netbox_dns/graphql/zone.py +0 -19
- netbox_dns/migrations/0001_initial.py +0 -115
- netbox_dns/migrations/0002_zone_default_ttl.py +0 -18
- netbox_dns/migrations/0003_soa_managed_records.py +0 -112
- netbox_dns/migrations/0004_create_ptr_for_a_aaaa_records.py +0 -80
- netbox_dns/migrations/0005_update_ns_records.py +0 -41
- netbox_dns/migrations/0006_zone_soa_serial_auto.py +0 -29
- netbox_dns/migrations/0007_alter_zone_soa_serial_auto.py +0 -17
- netbox_dns/migrations/0008_zone_status_names.py +0 -21
- netbox_dns/migrations/0009_netbox32.py +0 -71
- netbox_dns/migrations/0010_update_soa_records.py +0 -58
- netbox_dns/migrations/0011_add_view_model.py +0 -70
- netbox_dns/migrations/0012_adjust_zone_and_record.py +0 -17
- netbox_dns/migrations/0014_add_view_description.py +0 -16
- netbox_dns/migrations/0015_add_record_status.py +0 -17
- netbox_dns/migrations/0016_cleanup_ptr_records.py +0 -38
- netbox_dns/migrations/0017_alter_record_ttl.py +0 -17
- netbox_dns/migrations/0018_zone_arpa_network.py +0 -51
- netbox_dns/migrations/0019_update_ns_ttl.py +0 -19
- netbox_dns/urls.py +0 -297
- netbox_plugin_dns-0.22.8.dist-info/RECORD +0 -117
- /netbox_dns/{filters → filtersets}/__init__.py +0 -0
- {netbox_plugin_dns-0.22.8.dist-info → netbox_plugin_dns-1.0.0.dist-info}/LICENSE +0 -0
- {netbox_plugin_dns-0.22.8.dist-info → netbox_plugin_dns-1.0.0.dist-info}/WHEEL +0 -0
|
@@ -5,6 +5,7 @@ from rest_framework.exceptions import PermissionDenied as APIPermissionDenied
|
|
|
5
5
|
|
|
6
6
|
from netbox.signals import post_clean
|
|
7
7
|
from netbox.context import current_request
|
|
8
|
+
from netbox.plugins.utils import get_plugin_config
|
|
8
9
|
from ipam.models import IPAddress
|
|
9
10
|
|
|
10
11
|
from netbox_dns.models import Zone
|
|
@@ -18,13 +19,6 @@ from netbox_dns.utilities.ipam_coupling import (
|
|
|
18
19
|
DNSPermissionDenied,
|
|
19
20
|
)
|
|
20
21
|
|
|
21
|
-
try:
|
|
22
|
-
# NetBox 3.5.0 - 3.5.7, 3.5.9+
|
|
23
|
-
from extras.plugins import get_plugin_config
|
|
24
|
-
except ImportError:
|
|
25
|
-
# NetBox 3.5.8
|
|
26
|
-
from extras.plugins.utils import get_plugin_config
|
|
27
|
-
|
|
28
22
|
|
|
29
23
|
@receiver(post_clean, sender=IPAddress)
|
|
30
24
|
def ip_address_check_permissions_save(instance, **kwargs):
|
|
@@ -39,14 +33,14 @@ def ip_address_check_permissions_save(instance, **kwargs):
|
|
|
39
33
|
return
|
|
40
34
|
|
|
41
35
|
try:
|
|
42
|
-
if instance.
|
|
36
|
+
if instance.pk is None:
|
|
43
37
|
record = new_address_record(instance)
|
|
44
38
|
if record is not None:
|
|
45
39
|
record.full_clean()
|
|
46
40
|
check_permission(request, "netbox_dns.add_record", record)
|
|
47
41
|
|
|
48
42
|
else:
|
|
49
|
-
if not dns_changed(IPAddress.objects.get(pk=instance.
|
|
43
|
+
if not dns_changed(IPAddress.objects.get(pk=instance.pk), instance):
|
|
50
44
|
return
|
|
51
45
|
|
|
52
46
|
record = get_address_record(instance)
|
netbox_dns/tables/contact.py
CHANGED
netbox_dns/tables/nameserver.py
CHANGED
netbox_dns/tables/registrar.py
CHANGED
netbox_dns/tables/view.py
CHANGED
|
@@ -14,5 +14,12 @@ class ViewTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
14
14
|
|
|
15
15
|
class Meta(NetBoxTable.Meta):
|
|
16
16
|
model = View
|
|
17
|
-
fields = (
|
|
18
|
-
|
|
17
|
+
fields = (
|
|
18
|
+
"name",
|
|
19
|
+
"default_view",
|
|
20
|
+
"description",
|
|
21
|
+
"tenant",
|
|
22
|
+
"tenant_group",
|
|
23
|
+
"tags",
|
|
24
|
+
)
|
|
25
|
+
default_columns = ("name", "default_view")
|
netbox_dns/template_content.py
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
from packaging import version
|
|
2
|
+
|
|
2
3
|
from django.conf import settings
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
from extras.plugins import get_plugin_config
|
|
7
|
-
except ImportError:
|
|
8
|
-
# NetBox 3.5.8
|
|
9
|
-
from extras.plugins.utils import get_plugin_config
|
|
10
|
-
from extras.plugins import PluginTemplateExtension
|
|
5
|
+
from netbox.plugins.utils import get_plugin_config
|
|
6
|
+
from netbox.plugins import PluginTemplateExtension
|
|
11
7
|
|
|
12
8
|
from netbox_dns.models import Record, RecordTypeChoices, Zone, View, NameServer
|
|
13
9
|
from netbox_dns.tables import RelatedRecordTable
|
|
@@ -121,7 +117,7 @@ class RelatedDNSObjects(PluginTemplateExtension):
|
|
|
121
117
|
)
|
|
122
118
|
|
|
123
119
|
|
|
124
|
-
template_extensions =
|
|
120
|
+
template_extensions = []
|
|
125
121
|
|
|
126
122
|
if version.parse(settings.VERSION) < version.parse("3.7.0"):
|
|
127
123
|
template_extensions.append(RelatedDNSObjects)
|
|
@@ -5,62 +5,66 @@
|
|
|
5
5
|
<div class="col col-md-6">
|
|
6
6
|
<div class="card">
|
|
7
7
|
<h5 class="card-header">Contact</h5>
|
|
8
|
-
<
|
|
9
|
-
<
|
|
10
|
-
<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
</
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
</
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
</
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
</
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
</
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
</
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
</
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
</
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
</
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
</
|
|
62
|
-
</
|
|
63
|
-
|
|
8
|
+
<table class="table table-hover attr-table">
|
|
9
|
+
<tr>
|
|
10
|
+
<th scope="row">Name</th>
|
|
11
|
+
<td>{{ object.name }}</td>
|
|
12
|
+
</tr>
|
|
13
|
+
{% if object.description %}
|
|
14
|
+
<tr>
|
|
15
|
+
<th scope="row">Description</th>
|
|
16
|
+
<td style="word-break:break-all;">{{ object.description }}</td>
|
|
17
|
+
</tr>
|
|
18
|
+
{% endif %}
|
|
19
|
+
<tr>
|
|
20
|
+
<th scope="row">Contact ID</th>
|
|
21
|
+
<td>{{ object.contact_id }}</td>
|
|
22
|
+
</tr>
|
|
23
|
+
<tr>
|
|
24
|
+
<th scope="row">Organization</th>
|
|
25
|
+
<td>{{ object.organization }}</td>
|
|
26
|
+
</tr>
|
|
27
|
+
<tr>
|
|
28
|
+
<th scope="row">Street</th>
|
|
29
|
+
<td>{{ object.street }}</td>
|
|
30
|
+
</tr>
|
|
31
|
+
<tr>
|
|
32
|
+
<th scope="row">City</th>
|
|
33
|
+
<td>{{ object.city }}</td>
|
|
34
|
+
</tr>
|
|
35
|
+
<tr>
|
|
36
|
+
<th scope="row">State/Province</th>
|
|
37
|
+
<td>{{ object.state_province }}</td>
|
|
38
|
+
</tr>
|
|
39
|
+
<tr>
|
|
40
|
+
<th scope="row">Postal Code</th>
|
|
41
|
+
<td>{{ object.postal_code }}</td>
|
|
42
|
+
</tr>
|
|
43
|
+
<tr>
|
|
44
|
+
<th scope="row">Country</th>
|
|
45
|
+
<td>{{ object.country }}</td>
|
|
46
|
+
</tr>
|
|
47
|
+
<tr>
|
|
48
|
+
<th scope="row">Phone</th>
|
|
49
|
+
<td>{{ object.phone }}</td>
|
|
50
|
+
</tr>
|
|
51
|
+
<tr>
|
|
52
|
+
<th scope="row">Phone Extension</th>
|
|
53
|
+
<td>{{ object.phone_ext }}</td>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr>
|
|
56
|
+
<th scope="row">Fax</th>
|
|
57
|
+
<td>{{ object.fax }}</td>
|
|
58
|
+
</tr>
|
|
59
|
+
<tr>
|
|
60
|
+
<th scope="row">Fax Extension</th>
|
|
61
|
+
<td>{{ object.fax_ext }}</td>
|
|
62
|
+
</tr>
|
|
63
|
+
<tr>
|
|
64
|
+
<th scope="row">Email</th>
|
|
65
|
+
<td>{{ object.email }}</td>
|
|
66
|
+
</tr>
|
|
67
|
+
</table>
|
|
64
68
|
</div>
|
|
65
69
|
{% include 'inc/panels/custom_fields.html' %}
|
|
66
70
|
</div>
|
|
@@ -5,33 +5,33 @@
|
|
|
5
5
|
<div class="col col-md-6">
|
|
6
6
|
<div class="card">
|
|
7
7
|
<h5 class="card-header">Name Server</h5>
|
|
8
|
-
<
|
|
9
|
-
<
|
|
10
|
-
<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
</
|
|
33
|
-
</
|
|
34
|
-
</
|
|
8
|
+
<table class="table table-hover attr-table">
|
|
9
|
+
<tr>
|
|
10
|
+
<th scope="row">Name</th>
|
|
11
|
+
<td>{{ object.name }}</td>
|
|
12
|
+
</tr>
|
|
13
|
+
{% if unicode_name %}
|
|
14
|
+
<tr>
|
|
15
|
+
<th scope="row">IDN</th>
|
|
16
|
+
<td>{{ unicode_name }}</td>
|
|
17
|
+
</tr>
|
|
18
|
+
{% endif %}
|
|
19
|
+
{% if object.description %}
|
|
20
|
+
<tr>
|
|
21
|
+
<th scope="row">Description</th>
|
|
22
|
+
<td style="word-break:break-all;">{{ object.description }}</td>
|
|
23
|
+
</tr>
|
|
24
|
+
{% endif %}
|
|
25
|
+
<tr>
|
|
26
|
+
<th scope="row">Tenant</th>
|
|
27
|
+
<td>
|
|
28
|
+
{% if object.tenant.group %}
|
|
29
|
+
{{ object.tenant.group|linkify }} /
|
|
30
|
+
{% endif %}
|
|
31
|
+
{{ object.tenant|linkify|placeholder }}
|
|
32
|
+
</td>
|
|
33
|
+
</tr>
|
|
34
|
+
</table>
|
|
35
35
|
</div>
|
|
36
36
|
{% include 'inc/panels/custom_fields.html' %}
|
|
37
37
|
</div>
|
|
@@ -4,15 +4,19 @@
|
|
|
4
4
|
{% load render_table from django_tables2 %}
|
|
5
5
|
{% load perms %}
|
|
6
6
|
|
|
7
|
-
{% block
|
|
7
|
+
{% block control-buttons %}
|
|
8
8
|
{% if object.managed %}
|
|
9
9
|
{% else %}
|
|
10
10
|
{{ block.super }}
|
|
11
11
|
{% endif %}
|
|
12
|
-
{% endblock
|
|
12
|
+
{% endblock control-buttons %}
|
|
13
13
|
|
|
14
14
|
{% block breadcrumbs %}
|
|
15
|
-
{% if
|
|
15
|
+
{% if object.managed %}
|
|
16
|
+
<li class="breadcrumb-item">
|
|
17
|
+
<a href="{% url 'plugins:netbox_dns:managed_record_list' %}">{{ 'Managed Records' }}</a>
|
|
18
|
+
</li>
|
|
19
|
+
{% else %}
|
|
16
20
|
{{ block.super }}
|
|
17
21
|
{% endif %}
|
|
18
22
|
{% endblock %}
|
|
@@ -33,106 +37,100 @@
|
|
|
33
37
|
{% endif %}
|
|
34
38
|
<div class="card">
|
|
35
39
|
<h5 class="card-header">Record</h5>
|
|
36
|
-
<
|
|
37
|
-
<
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
<
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
<table class="table table-hover attr-table">
|
|
41
|
+
<tr>
|
|
42
|
+
<th scope="row">Name</th>
|
|
43
|
+
<td style="word-break:break-all;">{{ object.name }}</td>
|
|
44
|
+
</tr>
|
|
45
|
+
{% if unicode_name %}
|
|
46
|
+
<tr>
|
|
47
|
+
<th scope="row">IDN</th>
|
|
48
|
+
<td style="word-break:break-all;">{{ unicode_name }}</td>
|
|
49
|
+
</tr>
|
|
50
|
+
{% endif %}
|
|
51
|
+
<tr>
|
|
52
|
+
<th scope="row">Zone</th>
|
|
53
|
+
{% if object.managed %}
|
|
54
|
+
<td><a href="{% url 'plugins:netbox_dns:zone_managed_records' pk=object.zone.pk %}">{{ object.zone }}</a></td>
|
|
55
|
+
{% else %}
|
|
56
|
+
<td><a href="{% url 'plugins:netbox_dns:zone_records' pk=object.zone.pk %}">{{ object.zone }}</a></td>
|
|
47
57
|
{% endif %}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
58
|
+
</tr>
|
|
59
|
+
{% if object.tenant %}
|
|
60
|
+
<tr>
|
|
61
|
+
<th scope="row">Tenant</th>
|
|
62
|
+
<td>
|
|
63
|
+
{% if object.tenant.group %}
|
|
64
|
+
{{ object.tenant.group|linkify }} /
|
|
54
65
|
{% endif %}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
</
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
</
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
</
|
|
75
|
-
{
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
</
|
|
80
|
-
{%
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
<
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
<
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
</tr>
|
|
96
|
-
{% endif %}
|
|
97
|
-
{% if object.address_record %}
|
|
98
|
-
<tr>
|
|
99
|
-
<th scope="row">Address Record</th>
|
|
100
|
-
<td><a href="{% url 'plugins:netbox_dns:record' pk=object.address_record.pk %}">{{ object.address_record }}</td>
|
|
101
|
-
</tr>
|
|
102
|
-
{% if object.address_record.ipam_ip_address %}
|
|
103
|
-
<tr>
|
|
104
|
-
<th scope="row">IPAM IP Address</th>
|
|
105
|
-
<td><a href="{% url 'ipam:ipaddress' pk=object.address_record.ipam_ip_address.pk %}">{{ object.address_record.ipam_ip_address }}</td>
|
|
106
|
-
</tr>
|
|
107
|
-
{% endif %}
|
|
108
|
-
{% endif %}
|
|
109
|
-
{% if object.ipam_ip_address %}
|
|
66
|
+
{{ object.tenant|linkify|placeholder }}
|
|
67
|
+
</td>
|
|
68
|
+
</tr>
|
|
69
|
+
{% endif %}
|
|
70
|
+
<tr>
|
|
71
|
+
<th scope="row">Type</th>
|
|
72
|
+
<td>{{ object.type }}</td>
|
|
73
|
+
</tr>
|
|
74
|
+
<tr>
|
|
75
|
+
<th scope="row">Value</th>
|
|
76
|
+
<td style="word-break:break-all;">{{ object.value }}</td>
|
|
77
|
+
</tr>
|
|
78
|
+
{% if unicode_value %}
|
|
79
|
+
<tr>
|
|
80
|
+
<th scope="row">Unicode Value</th>
|
|
81
|
+
<td style="word-break:break-all;">{{ unicode_value }}</td>
|
|
82
|
+
</tr>
|
|
83
|
+
{% endif %}
|
|
84
|
+
<tr>
|
|
85
|
+
<th scope="row">TTL</th>
|
|
86
|
+
<td>{{ object.ttl|placeholder }}</td>
|
|
87
|
+
</tr>
|
|
88
|
+
{% if object.type == 'A' or object.type == 'AAAA' %}
|
|
89
|
+
<tr>
|
|
90
|
+
<th scope="row">Disable PTR</th>
|
|
91
|
+
<td>{% checkmark object.disable_ptr %}</td>
|
|
92
|
+
</tr>
|
|
93
|
+
{% endif %}
|
|
94
|
+
{% if object.ptr_record %}
|
|
95
|
+
<tr>
|
|
96
|
+
<th scope="row">PTR Record</th>
|
|
97
|
+
<td><a href="{% url 'plugins:netbox_dns:record' pk=object.ptr_record.pk %}">{{ object.ptr_record }}</td>
|
|
98
|
+
</tr>
|
|
99
|
+
{% endif %}
|
|
100
|
+
{% if object.address_record %}
|
|
101
|
+
<tr>
|
|
102
|
+
<th scope="row">Address Record</th>
|
|
103
|
+
<td><a href="{% url 'plugins:netbox_dns:record' pk=object.address_record.pk %}">{{ object.address_record }}</td>
|
|
104
|
+
</tr>
|
|
105
|
+
{% if object.address_record.ipam_ip_address %}
|
|
110
106
|
<tr>
|
|
111
107
|
<th scope="row">IPAM IP Address</th>
|
|
112
|
-
<td><a href="{% url 'ipam:ipaddress' pk=object.ipam_ip_address.pk %}">{{ object.ipam_ip_address }}</td>
|
|
108
|
+
<td><a href="{% url 'ipam:ipaddress' pk=object.address_record.ipam_ip_address.pk %}">{{ object.address_record.ipam_ip_address }}</td>
|
|
113
109
|
</tr>
|
|
114
110
|
{% endif %}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
</
|
|
119
|
-
{%
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
</
|
|
124
|
-
{%
|
|
125
|
-
</
|
|
126
|
-
|
|
111
|
+
{% endif %}
|
|
112
|
+
{% if object.ipam_ip_address %}
|
|
113
|
+
<tr>
|
|
114
|
+
<th scope="row">IPAM IP Address</th>
|
|
115
|
+
<td><a href="{% url 'ipam:ipaddress' pk=object.ipam_ip_address.pk %}">{{ object.ipam_ip_address }}</td>
|
|
116
|
+
</tr>
|
|
117
|
+
{% endif %}
|
|
118
|
+
<tr>
|
|
119
|
+
<th scope="row">Status</th>
|
|
120
|
+
<td>{% badge object.get_status_display bg_color=object.get_status_color %}</td>
|
|
121
|
+
</tr>
|
|
122
|
+
{% if object.description %}
|
|
123
|
+
<tr>
|
|
124
|
+
<th scope="row">Description</th>
|
|
125
|
+
<td style="word-break:break-all;">{{ object.description }}</td>
|
|
126
|
+
</tr>
|
|
127
|
+
{% endif %}
|
|
128
|
+
</table>
|
|
127
129
|
</div>
|
|
128
130
|
{% if cname_target_table and cname_target_table.rows|length > 0 %}
|
|
129
|
-
|
|
130
|
-
{% include 'inc/panel_table.html' with table=cname_target_table heading='CNAME Targets' %}
|
|
131
|
-
</div>
|
|
131
|
+
{% include 'inc/panel_table.html' with table=cname_target_table heading='CNAME Targets' %}
|
|
132
132
|
{% elif cname_table and cname_table.rows|length > 0 %}
|
|
133
|
-
|
|
134
|
-
{% include 'inc/panel_table.html' with table=cname_table heading='CNAMEs' %}
|
|
135
|
-
</div>
|
|
133
|
+
{% include 'inc/panel_table.html' with table=cname_table heading='CNAMEs' %}
|
|
136
134
|
{% endif %}
|
|
137
135
|
{% if not object.managed %}
|
|
138
136
|
{% include 'inc/panels/custom_fields.html' %}
|
|
@@ -5,45 +5,47 @@
|
|
|
5
5
|
<div class="col col-md-6">
|
|
6
6
|
<div class="card">
|
|
7
7
|
<h5 class="card-header">Registrar</h5>
|
|
8
|
-
<
|
|
9
|
-
<
|
|
10
|
-
<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
<table class="table table-hover attr-table">
|
|
9
|
+
<tr>
|
|
10
|
+
<th scope="row">Name</th>
|
|
11
|
+
<td>{{ object.name }}</td>
|
|
12
|
+
</tr>
|
|
13
|
+
{% if object.description %}
|
|
14
|
+
<tr>
|
|
15
|
+
<th scope="row">Description</th>
|
|
16
|
+
<td style="word-break:break-all;">{{ object.description }}</td>
|
|
17
|
+
</tr>
|
|
18
|
+
{% endif %}
|
|
19
|
+
<tr>
|
|
20
|
+
<th scope="row">IANA ID</th>
|
|
21
|
+
<td>{{ object.iana_id }}</td>
|
|
22
|
+
</tr>
|
|
23
|
+
</table>
|
|
20
24
|
</div>
|
|
21
25
|
<div class="card">
|
|
22
26
|
<h5 class="card-header">Contact Details</h5>
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
<
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
</table>
|
|
46
|
-
</div>
|
|
27
|
+
<table class="table table-hover attr-table">
|
|
28
|
+
<tr>
|
|
29
|
+
<th scope="row">Address</th>
|
|
30
|
+
<td>{{ object.address }}</td>
|
|
31
|
+
</tr>
|
|
32
|
+
<tr>
|
|
33
|
+
<th scope="row">Referral URL</th>
|
|
34
|
+
<td><a href="{{ object.referral_url }}">{{ object.referral_url }}</a></td>
|
|
35
|
+
</tr>
|
|
36
|
+
<tr>
|
|
37
|
+
<th scope="row">WHOIS Server</th>
|
|
38
|
+
<td>{{ object.whois_server }}</td>
|
|
39
|
+
</tr>
|
|
40
|
+
<tr>
|
|
41
|
+
<th scope="row">Abuse Email</th>
|
|
42
|
+
<td>{{ object.abuse_email }}</td>
|
|
43
|
+
</tr>
|
|
44
|
+
<tr>
|
|
45
|
+
<th scope="row">Abuse Phone</th>
|
|
46
|
+
<td>{{ object.abuse_phone }}</td>
|
|
47
|
+
</tr>
|
|
48
|
+
</table>
|
|
47
49
|
</div>
|
|
48
50
|
{% include 'inc/panels/custom_fields.html' %}
|
|
49
51
|
</div>
|