netbox-plugin-dns 0.22.9__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.

Files changed (115) hide show
  1. netbox_dns/__init__.py +4 -15
  2. netbox_dns/api/nested_serializers.py +4 -60
  3. netbox_dns/api/serializers.py +8 -314
  4. netbox_dns/api/serializers_/__init__.py +0 -0
  5. netbox_dns/api/serializers_/contact.py +37 -0
  6. netbox_dns/api/serializers_/nameserver.py +39 -0
  7. netbox_dns/api/serializers_/record.py +90 -0
  8. netbox_dns/api/serializers_/registrar.py +31 -0
  9. netbox_dns/api/serializers_/view.py +34 -0
  10. netbox_dns/api/serializers_/zone.py +159 -0
  11. netbox_dns/api/views.py +13 -13
  12. netbox_dns/fields/network.py +21 -22
  13. netbox_dns/fields/rfc2317.py +3 -3
  14. netbox_dns/{filters → filtersets}/contact.py +2 -1
  15. netbox_dns/filtersets/nameserver.py +37 -0
  16. netbox_dns/{filters → filtersets}/record.py +51 -6
  17. netbox_dns/{filters → filtersets}/registrar.py +2 -1
  18. netbox_dns/{filters → filtersets}/view.py +2 -2
  19. netbox_dns/filtersets/zone.py +205 -0
  20. netbox_dns/forms/contact.py +61 -33
  21. netbox_dns/forms/nameserver.py +21 -8
  22. netbox_dns/forms/record.py +65 -38
  23. netbox_dns/forms/registrar.py +45 -15
  24. netbox_dns/forms/view.py +23 -9
  25. netbox_dns/forms/zone.py +182 -188
  26. netbox_dns/graphql/__init__.py +17 -27
  27. netbox_dns/graphql/filters.py +49 -0
  28. netbox_dns/graphql/schema.py +66 -7
  29. netbox_dns/graphql/types.py +143 -0
  30. netbox_dns/management/commands/cleanup_database.py +0 -4
  31. netbox_dns/management/commands/cleanup_rrset_ttl.py +2 -4
  32. netbox_dns/management/commands/setup_coupling.py +15 -15
  33. netbox_dns/management/commands/update_soa.py +1 -1
  34. netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -27
  35. netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +558 -0
  36. netbox_dns/migrations/{0013_add_nameserver_zone_record_description.py → 0002_contact_description_registrar_description.py} +4 -9
  37. netbox_dns/migrations/0003_default_view.py +15 -0
  38. netbox_dns/migrations/0004_create_and_assign_default_view.py +26 -0
  39. netbox_dns/migrations/0005_alter_zone_view_not_null.py +18 -0
  40. netbox_dns/migrations/0020_netbox_3_4.py +1 -1
  41. netbox_dns/models/contact.py +6 -1
  42. netbox_dns/models/nameserver.py +2 -0
  43. netbox_dns/models/record.py +28 -33
  44. netbox_dns/models/registrar.py +5 -1
  45. netbox_dns/models/view.py +54 -1
  46. netbox_dns/models/zone.py +68 -54
  47. netbox_dns/navigation.py +1 -15
  48. netbox_dns/signals/ipam_coupling.py +3 -9
  49. netbox_dns/tables/contact.py +1 -0
  50. netbox_dns/tables/nameserver.py +0 -2
  51. netbox_dns/tables/registrar.py +1 -0
  52. netbox_dns/tables/view.py +9 -2
  53. netbox_dns/template_content.py +4 -8
  54. netbox_dns/templates/netbox_dns/contact.html +60 -56
  55. netbox_dns/templates/netbox_dns/nameserver.html +27 -27
  56. netbox_dns/templates/netbox_dns/record.html +92 -94
  57. netbox_dns/templates/netbox_dns/registrar.html +38 -36
  58. netbox_dns/templates/netbox_dns/view.html +25 -21
  59. netbox_dns/templates/netbox_dns/zone/base.html +5 -3
  60. netbox_dns/templates/netbox_dns/zone/child.html +3 -3
  61. netbox_dns/templates/netbox_dns/zone/managed_record.html +1 -1
  62. netbox_dns/templates/netbox_dns/zone/record.html +3 -3
  63. netbox_dns/templates/netbox_dns/zone/registration.html +26 -27
  64. netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +1 -1
  65. netbox_dns/templates/netbox_dns/zone.html +148 -149
  66. netbox_dns/urls/__init__.py +17 -0
  67. netbox_dns/urls/contact.py +51 -0
  68. netbox_dns/urls/nameserver.py +69 -0
  69. netbox_dns/urls/record.py +41 -0
  70. netbox_dns/urls/registrar.py +63 -0
  71. netbox_dns/urls/view.py +39 -0
  72. netbox_dns/urls/zone.py +57 -0
  73. netbox_dns/utilities/__init__.py +1 -6
  74. netbox_dns/utilities/ipam_coupling.py +2 -7
  75. netbox_dns/validators/dns_name.py +4 -9
  76. netbox_dns/validators/rfc2317.py +2 -2
  77. netbox_dns/views/contact.py +4 -4
  78. netbox_dns/views/nameserver.py +5 -5
  79. netbox_dns/views/record.py +15 -23
  80. netbox_dns/views/registrar.py +4 -4
  81. netbox_dns/views/view.py +4 -4
  82. netbox_dns/views/zone.py +7 -8
  83. {netbox_plugin_dns-0.22.9.dist-info → netbox_plugin_dns-1.0.0.dist-info}/METADATA +27 -13
  84. netbox_plugin_dns-1.0.0.dist-info/RECORD +112 -0
  85. netbox_dns/filters/nameserver.py +0 -18
  86. netbox_dns/filters/zone.py +0 -112
  87. netbox_dns/graphql/contact.py +0 -19
  88. netbox_dns/graphql/nameserver.py +0 -19
  89. netbox_dns/graphql/record.py +0 -19
  90. netbox_dns/graphql/registrar.py +0 -19
  91. netbox_dns/graphql/view.py +0 -19
  92. netbox_dns/graphql/zone.py +0 -19
  93. netbox_dns/migrations/0001_initial.py +0 -115
  94. netbox_dns/migrations/0002_zone_default_ttl.py +0 -18
  95. netbox_dns/migrations/0003_soa_managed_records.py +0 -112
  96. netbox_dns/migrations/0004_create_ptr_for_a_aaaa_records.py +0 -80
  97. netbox_dns/migrations/0005_update_ns_records.py +0 -41
  98. netbox_dns/migrations/0006_zone_soa_serial_auto.py +0 -29
  99. netbox_dns/migrations/0007_alter_zone_soa_serial_auto.py +0 -17
  100. netbox_dns/migrations/0008_zone_status_names.py +0 -21
  101. netbox_dns/migrations/0009_netbox32.py +0 -71
  102. netbox_dns/migrations/0010_update_soa_records.py +0 -58
  103. netbox_dns/migrations/0011_add_view_model.py +0 -70
  104. netbox_dns/migrations/0012_adjust_zone_and_record.py +0 -17
  105. netbox_dns/migrations/0014_add_view_description.py +0 -16
  106. netbox_dns/migrations/0015_add_record_status.py +0 -17
  107. netbox_dns/migrations/0016_cleanup_ptr_records.py +0 -38
  108. netbox_dns/migrations/0017_alter_record_ttl.py +0 -17
  109. netbox_dns/migrations/0018_zone_arpa_network.py +0 -51
  110. netbox_dns/migrations/0019_update_ns_ttl.py +0 -19
  111. netbox_dns/urls.py +0 -297
  112. netbox_plugin_dns-0.22.9.dist-info/RECORD +0 -117
  113. /netbox_dns/{filters → filtersets}/__init__.py +0 -0
  114. {netbox_plugin_dns-0.22.9.dist-info → netbox_plugin_dns-1.0.0.dist-info}/LICENSE +0 -0
  115. {netbox_plugin_dns-0.22.9.dist-info → netbox_plugin_dns-1.0.0.dist-info}/WHEEL +0 -0
@@ -1,13 +1,15 @@
1
1
  {% extends 'generic/object.html' %}
2
+ {% load buttons %}
2
3
  {% load helpers %}
3
4
  {% load plugins %}
4
- {% load render_table from django_tables2 %}
5
5
  {% load perms %}
6
6
 
7
7
  {% block extra_controls %}
8
8
  {% if perms.netbox_dns.add_record %}
9
- <a href="{% url 'plugins:netbox_dns:record_add' %}?zone={{ object.id }}&return_url={{ object.get_absolute_url }}" class="btn btn-sm btn-primary" role="button">
10
- <i class="mdi mdi-plus-thick"></i> Add Record
9
+ <a href="{% url 'plugins:netbox_dns:record_add' %}?zone={{ object.pk }}&return_url={{ object.get_absolute_url }}">
10
+ <button type="submit" class="btn btn-primary" name="add-record">
11
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i>Add Record
12
+ </button>
11
13
  </a>
12
14
  {% endif %}
13
15
  {{ block.super }}
@@ -11,7 +11,7 @@
11
11
  <input type="hidden" name="return_url" value="{% if return_url %}{{ return_url }}{% else %}{{ request.path }}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}{% endif %}" />
12
12
 
13
13
  <div class="card">
14
- <div class="card-body htmx-container table-responsive" id="object_list">
14
+ <div class="htmx-container table-responsive" id="object_list">
15
15
  {% include 'htmx/table.html' %}
16
16
  </div>
17
17
  </div>
@@ -22,12 +22,12 @@
22
22
  <div class="bulk-button-group">
23
23
  {% block bulk_buttons %}{% endblock %}
24
24
  {% if bulk_edit_url and perms.netbox_dns.change_zone %}
25
- <button type="submit" name="_edit" formaction="{% url bulk_edit_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-warning btn-sm">
25
+ <button type="submit" name="_edit" formaction="{% url bulk_edit_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-warning">
26
26
  <i class="mdi mdi-pencil" aria-hidden="true"></i> Edit Selected
27
27
  </button>
28
28
  {% endif %}
29
29
  {% if bulk_delete_url and perms.netbox_dns.delete_zone %}
30
- <button type="submit" name="_delete" formaction="{% url bulk_delete_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-danger btn-sm">
30
+ <button type="submit" name="_delete" formaction="{% url bulk_delete_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-danger">
31
31
  <i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> Delete Selected
32
32
  </button>
33
33
  {% endif %}
@@ -6,7 +6,7 @@
6
6
  {% block content %}
7
7
  {% include 'inc/table_controls_htmx.html' with table_modal="ManagedRecordTable_config" %}
8
8
  <div class="card">
9
- <div class="card-body htmx-container table-responsive" id="object_list">
9
+ <div class="htmx-container table-responsive" id="object_list">
10
10
  {% include 'htmx/table.html' %}
11
11
  </div>
12
12
  </div>
@@ -11,7 +11,7 @@
11
11
  <input type="hidden" name="return_url" value="{% if return_url %}{{ return_url }}{% else %}{{ request.path }}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}{% endif %}" />
12
12
 
13
13
  <div class="card">
14
- <div class="card-body htmx-container table-responsive" id="object_list">
14
+ <div class="htmx-container table-responsive" id="object_list">
15
15
  {% include 'htmx/table.html' %}
16
16
  </div>
17
17
  </div>
@@ -22,12 +22,12 @@
22
22
  <div class="bulk-button-group">
23
23
  {% block bulk_buttons %}{% endblock %}
24
24
  {% if bulk_edit_url and perms.netbox_dns.change_record %}
25
- <button type="submit" name="_edit" formaction="{% url bulk_edit_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-warning btn-sm">
25
+ <button type="submit" name="_edit" formaction="{% url bulk_edit_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-warning">
26
26
  <i class="mdi mdi-pencil" aria-hidden="true"></i> Edit Selected
27
27
  </button>
28
28
  {% endif %}
29
29
  {% if bulk_delete_url and perms.netbox_dns.delete_record %}
30
- <button type="submit" name="_delete" formaction="{% url bulk_delete_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-danger btn-sm">
30
+ <button type="submit" name="_delete" formaction="{% url bulk_delete_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-danger">
31
31
  <i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> Delete Selected
32
32
  </button>
33
33
  {% endif %}
@@ -4,33 +4,32 @@
4
4
  {% block content %}
5
5
  <div class="card">
6
6
  <h5 class="card-header">Domain Registration</h5>
7
- <div class="card-body">
8
- <table class="table table-hover attr-table">
9
- <tr>
10
- <th scope="row">Registrar</th>
11
- <td>{{ object.registrar|linkify|placeholder }}</td>
12
- </tr>
13
- <tr>
14
- <th scope="row">Registry Domain ID</th>
15
- <td>{{ object.registry_domain_id|placeholder }}</td>
16
- </tr>
17
- <tr>
18
- <th scope="row">Registrant</th>
19
- <td>{{ object.registrant|linkify|placeholder }}</td>
20
- </tr>
21
- <tr>
22
- <th scope="row">Administrative Contact</th>
23
- <td>{{ object.admin_c|linkify|placeholder }}</td>
24
- </tr>
25
- <tr>
26
- <th scope="row">Technical Contact</th>
27
- <td>{{ object.tech_c|linkify|placeholder }}</td>
28
- </tr>
29
- <tr>
30
- <th scope="row">Billing Contact</th>
31
- <td>{{ object.billing_c|linkify|placeholder }}</td>
32
- </tr>
33
- </table>
7
+ <table class="table table-hover attr-table">
8
+ <tr>
9
+ <th scope="row">Registrar</th>
10
+ <td>{{ object.registrar|linkify|placeholder }}</td>
11
+ </tr>
12
+ <tr>
13
+ <th scope="row">Registry Domain ID</th>
14
+ <td>{{ object.registry_domain_id|placeholder }}</td>
15
+ </tr>
16
+ <tr>
17
+ <th scope="row">Registrant</th>
18
+ <td>{{ object.registrant|linkify|placeholder }}</td>
19
+ </tr>
20
+ <tr>
21
+ <th scope="row">Administrative Contact</th>
22
+ <td>{{ object.admin_c|linkify|placeholder }}</td>
23
+ </tr>
24
+ <tr>
25
+ <th scope="row">Technical Contact</th>
26
+ <td>{{ object.tech_c|linkify|placeholder }}</td>
27
+ </tr>
28
+ <tr>
29
+ <th scope="row">Billing Contact</th>
30
+ <td>{{ object.billing_c|linkify|placeholder }}</td>
31
+ </tr>
32
+ </table>
34
33
  </div>
35
34
  </div>
36
35
  {% endblock %}
@@ -6,7 +6,7 @@
6
6
  {% block content %}
7
7
  {% include 'inc/table_controls_htmx.html' with table_modal="RFC2317ChildZoneTable_config" %}
8
8
  <div class="card">
9
- <div class="card-body htmx-container table-responsive" id="object_list">
9
+ <div class="htmx-container table-responsive" id="object_list">
10
10
  {% include 'htmx/table.html' %}
11
11
  </div>
12
12
  </div>
@@ -9,95 +9,97 @@
9
9
  <h5 class="card-header">
10
10
  Zone
11
11
  </h5>
12
- <div class="card-body">
13
- <table class="table table-hover attr-table">
14
- <tr>
15
- <th scope="row">Name</th>
16
- <td>{{ object.name }}</td>
17
- </tr>
18
- {% if unicode_name %}
19
- <tr>
20
- <th scope="row">IDN</th>
21
- <td>{{ unicode_name }}</td>
22
- </tr>
23
- {% endif %}
24
- {% if object.view %}
25
- <tr>
26
- <th scope="row">View</th>
27
- <td>
28
- <a href="{% url 'plugins:netbox_dns:view' pk=object.view.pk %}">
29
- {{ object.view }}
30
- </a>
31
- </td>
32
- </tr>
33
- {% endif %}
34
- <tr>
35
- <th scope="row">Tenant</th>
36
- <td>
37
- {% if object.tenant.group %}
38
- {{ object.tenant.group|linkify }} /
39
- {% endif %}
40
- {{ object.tenant|linkify|placeholder }}
41
- </td>
42
- </tr>
43
- <tr>
44
- <th scope="row">Status</th>
45
- <td>{% badge object.get_status_display bg_color=object.get_status_color %}</td>
46
- </tr>
47
- <tr>
48
- <th scope="row">Nameservers</th>
49
- <td>
50
- <table>
51
- {% for nameserver in object.nameservers.all %}
52
- <tr>
53
- <td>
54
- <a href="{% url 'plugins:netbox_dns:nameserver' pk=nameserver.pk %}">
55
- {{ nameserver }}
56
- </a>
57
- </td>
58
- </tr>
59
- {% endfor %}
60
- </table>
61
- </td>
62
- {% if nameserver_warnings %}
63
- <tr>
64
- <th class="text-warning" scope="row">Warnings</th>
65
- <td>
66
- <table>
67
- {% for warning in nameserver_warnings %}
68
- <tr>
69
- <td class="text-warning">{{ warning }}</td>
70
- </tr>
71
- {% endfor %}
72
- </table>
73
- </td>
74
- </tr>
75
- {% endif %}
76
- {% if nameserver_errors %}
77
- <tr>
78
- <th class="text-danger" scope="row">Errors</th>
79
- <td>
80
- <table>
81
- {% for error in nameserver_errors %}
82
- <tr>
83
- <td class="text-danger">{{ error }}</td>
84
- </tr>
85
- {% endfor %}
86
- </table>
87
- </td>
88
- </tr>
89
- {% endif %}
90
- </tr>
91
- <tr>
92
- <th scope="row">Default TTL</th>
93
- <td>{{ object.default_ttl }}</td>
94
- </tr>
95
- <tr>
96
- <th scope="row">Description</th>
97
- <td>{{ object.description }}</td>
98
- </tr>
99
- </table>
100
- </div>
12
+ <table class="table table-hover attr-table">
13
+ <tr>
14
+ <th scope="row">Name</th>
15
+ <td>{{ object.name }}</td>
16
+ </tr>
17
+ {% if unicode_name %}
18
+ <tr>
19
+ <th scope="row">IDN</th>
20
+ <td>{{ unicode_name }}</td>
21
+ </tr>
22
+ {% endif %}
23
+ <tr>
24
+ <th scope="row">View</th>
25
+ <td>
26
+ <a href="{% url 'plugins:netbox_dns:view' pk=object.view.pk %}">
27
+ {{ object.view }}
28
+ </a>
29
+ </td>
30
+ </tr>
31
+ {% if object.description %}
32
+ <tr>
33
+ <th scope="row">Description</th>
34
+ <td style="word-break:break-all;">{{ object.description }}</td>
35
+ </tr>
36
+ {% endif %}
37
+ <tr>
38
+ <th scope="row">Tenant</th>
39
+ <td>
40
+ {% if object.tenant.group %}
41
+ {{ object.tenant.group|linkify }} /
42
+ {% endif %}
43
+ {{ object.tenant|linkify|placeholder }}
44
+ </td>
45
+ </tr>
46
+ <tr>
47
+ <th scope="row">Status</th>
48
+ <td>{% badge object.get_status_display bg_color=object.get_status_color %}</td>
49
+ </tr>
50
+ <tr>
51
+ <th scope="row">Nameservers</th>
52
+ <td>
53
+ <table>
54
+ {% for nameserver in object.nameservers.all %}
55
+ <tr>
56
+ <td>
57
+ <a href="{% url 'plugins:netbox_dns:nameserver' pk=nameserver.pk %}">
58
+ {{ nameserver }}
59
+ </a>
60
+ </td>
61
+ </tr>
62
+ {% endfor %}
63
+ </table>
64
+ </td>
65
+ {% if nameserver_warnings %}
66
+ <tr>
67
+ <th class="text-warning" scope="row">Warnings</th>
68
+ <td>
69
+ <table>
70
+ {% for warning in nameserver_warnings %}
71
+ <tr>
72
+ <td class="text-warning">{{ warning }}</td>
73
+ </tr>
74
+ {% endfor %}
75
+ </table>
76
+ </td>
77
+ </tr>
78
+ {% endif %}
79
+ {% if nameserver_errors %}
80
+ <tr>
81
+ <th class="text-danger" scope="row">Errors</th>
82
+ <td>
83
+ <table>
84
+ {% for error in nameserver_errors %}
85
+ <tr>
86
+ <td class="text-danger">{{ error }}</td>
87
+ </tr>
88
+ {% endfor %}
89
+ </table>
90
+ </td>
91
+ </tr>
92
+ {% endif %}
93
+ </tr>
94
+ <tr>
95
+ <th scope="row">Default TTL</th>
96
+ <td>{{ object.default_ttl }}</td>
97
+ </tr>
98
+ <tr>
99
+ <th scope="row">Description</th>
100
+ <td>{{ object.description }}</td>
101
+ </tr>
102
+ </table>
101
103
  </div>
102
104
 
103
105
  {% include 'inc/panels/tags.html' %}
@@ -106,70 +108,67 @@
106
108
  <div class="col col-md-6">
107
109
  <div class="card">
108
110
  <h5 class="card-header">Zone SOA</h5>
109
- <div class="card-body">
110
- <table class="table table-hover attr-table">
111
- <tr>
112
- <th scope="row">TTL</th>
113
- <td>{{ object.soa_ttl }}</td>
114
- </tr>
115
- <tr>
116
- <th scope="row">Primary Nameserver</th>
117
- <td><a href="{% url 'plugins:netbox_dns:nameserver' pk=object.soa_mname.pk %}">{{ object.soa_mname }}</a></td>
118
- </tr>
119
- <tr>
120
- <th scope="row">Responsible</th>
121
- <td>{{ object.soa_rname }}</td>
122
- </tr>
123
- {% if object.soa_serial_auto %}
124
- <tr>
125
- <th scope="row">Serial (auto-generated)</th>
126
- <td>{{ object.soa_serial }}</td>
127
- </tr>
128
- {% else %}
129
- <tr>
130
- <th scope="row">Serial</th>
131
- <td>{{ object.soa_serial }}</td>
132
- </tr>
133
- {% endif %}
134
- <tr>
135
- <th scope="row">Refresh</th>
136
- <td>{{ object.soa_refresh }}</td>
137
- </tr>
138
- <tr>
139
- <th scope="row">Retry</th>
140
- <td>{{ object.soa_retry }}</td>
141
- </tr>
142
- <tr>
143
- <th scope="row">Expire</th>
144
- <td>{{ object.soa_expire }}</td>
145
- </tr>
146
- <tr>
147
- <th scope="row">Minimum TTL</th>
148
- <td>{{ object.soa_minimum }}</td>
149
- </tr>
150
- </table>
151
- </div>
111
+ <table class="table table-hover attr-table">
112
+ <tr>
113
+ <th scope="row">TTL</th>
114
+ <td>{{ object.soa_ttl }}</td>
115
+ </tr>
116
+ <tr>
117
+ <th scope="row">MName</th>
118
+ <td><a href="{% url 'plugins:netbox_dns:nameserver' pk=object.soa_mname.pk %}">{{ object.soa_mname }}</a></td>
119
+ </tr>
120
+ <tr>
121
+ <th scope="row">RName</th>
122
+ <td>{{ object.soa_rname }}</td>
123
+ </tr>
124
+ {% if object.soa_serial_auto %}
125
+ <tr>
126
+ <th scope="row">Serial (auto-generated)</th>
127
+ <td>{{ object.soa_serial }}</td>
128
+ </tr>
129
+ {% else %}
130
+ <tr>
131
+ <th scope="row">Serial</th>
132
+ <td>{{ object.soa_serial }}</td>
133
+ </tr>
134
+ {% endif %}
135
+ <tr>
136
+ <th scope="row">Refresh</th>
137
+ <td>{{ object.soa_refresh }}</td>
138
+ </tr>
139
+ <tr>
140
+ <th scope="row">Retry</th>
141
+ <td>{{ object.soa_retry }}</td>
142
+ </tr>
143
+ <tr>
144
+ <th scope="row">Expire</th>
145
+ <td>{{ object.soa_expire }}</td>
146
+ </tr>
147
+ <tr>
148
+ <th scope="row">Minimum TTL</th>
149
+ <td>{{ object.soa_minimum }}</td>
150
+ </tr>
151
+ </table>
152
152
  </div>
153
153
  {% if object.rfc2317_prefix %}
154
154
  <div class="card">
155
155
  <h5 class="card-header">RFC2317</h5>
156
- <div class="card-body">
157
- <table class="table table-hover soa-table">
158
- <tr>
159
- <th scope="row">Prefix</th>
160
- <td>{{ object.rfc2317_prefix }}</td>
161
- </tr>
162
- <tr>
163
- <th scope="row">Parent Managed</th>
164
- <td>{% checkmark object.rfc2317_parent_managed %}</td>
165
- </tr>
166
- {% if object.rfc2317_parent_managed %}
167
- <tr>
168
- <th scope="row">Parent Zone</th>
169
- <td><a href="{% url 'plugins:netbox_dns:zone' pk=object.rfc2317_parent_zone.pk %}">{{ object.rfc2317_parent_zone }}</a></td>
170
- </tr>
171
- {% endif %}
172
- </table>
156
+ <table class="table table-hover soa-table">
157
+ <tr>
158
+ <th scope="row">Prefix</th>
159
+ <td>{{ object.rfc2317_prefix }}</td>
160
+ </tr>
161
+ <tr>
162
+ <th scope="row">Parent Managed</th>
163
+ <td>{% checkmark object.rfc2317_parent_managed %}</td>
164
+ </tr>
165
+ {% if object.rfc2317_parent_managed %}
166
+ <tr>
167
+ <th scope="row">Parent Zone</th>
168
+ <td><a href="{% url 'plugins:netbox_dns:zone' pk=object.rfc2317_parent_zone.pk %}">{{ object.rfc2317_parent_zone }}</a></td>
169
+ </tr>
170
+ {% endif %}
171
+ </table>
173
172
  </div>
174
173
  </div>
175
174
  {% endif %}
@@ -0,0 +1,17 @@
1
+ from .contact import contact_urlpatterns
2
+ from .nameserver import nameserver_urlpatterns
3
+ from .record import record_urlpatterns
4
+ from .registrar import registrar_urlpatterns
5
+ from .view import view_urlpatterns
6
+ from .zone import zone_urlpatterns
7
+
8
+ app_name = "netbox_dns"
9
+
10
+ urlpatterns = (
11
+ contact_urlpatterns
12
+ + nameserver_urlpatterns
13
+ + record_urlpatterns
14
+ + registrar_urlpatterns
15
+ + view_urlpatterns
16
+ + zone_urlpatterns
17
+ )
@@ -0,0 +1,51 @@
1
+ from django.urls import path
2
+
3
+ from netbox.views.generic import ObjectChangeLogView, ObjectJournalView
4
+
5
+ from netbox_dns.models import Contact
6
+ from netbox_dns.views import (
7
+ ContactListView,
8
+ ContactView,
9
+ ContactDeleteView,
10
+ ContactEditView,
11
+ ContactBulkImportView,
12
+ ContactBulkEditView,
13
+ ContactBulkDeleteView,
14
+ ContactZoneListView,
15
+ )
16
+
17
+ contact_urlpatterns = [
18
+ path("contacts/", ContactListView.as_view(), name="contact_list"),
19
+ path("contacts/add/", ContactEditView.as_view(), name="contact_add"),
20
+ path("contacts/import/", ContactBulkImportView.as_view(), name="contact_import"),
21
+ path("contacts/edit/", ContactBulkEditView.as_view(), name="contact_bulk_edit"),
22
+ path(
23
+ "contacts/delete/",
24
+ ContactBulkDeleteView.as_view(),
25
+ name="contact_bulk_delete",
26
+ ),
27
+ path("contacts/<int:pk>/", ContactView.as_view(), name="contact"),
28
+ path("contacts/<int:pk>/edit/", ContactEditView.as_view(), name="contact_edit"),
29
+ path(
30
+ "contacts/<int:pk>/delete/",
31
+ ContactDeleteView.as_view(),
32
+ name="contact_delete",
33
+ ),
34
+ path(
35
+ "contacts/<int:pk>/zones/",
36
+ ContactZoneListView.as_view(),
37
+ name="contact_zones",
38
+ ),
39
+ path(
40
+ "contacts/<int:pk>/journal/",
41
+ ObjectJournalView.as_view(),
42
+ name="contact_journal",
43
+ kwargs={"model": Contact},
44
+ ),
45
+ path(
46
+ "contacts/<int:pk>/changelog/",
47
+ ObjectChangeLogView.as_view(),
48
+ name="contact_changelog",
49
+ kwargs={"model": Contact},
50
+ ),
51
+ ]
@@ -0,0 +1,69 @@
1
+ from django.urls import path
2
+
3
+ from netbox.views.generic import ObjectChangeLogView, ObjectJournalView
4
+
5
+ from netbox_dns.models import NameServer
6
+ from netbox_dns.views import (
7
+ NameServerListView,
8
+ NameServerView,
9
+ NameServerEditView,
10
+ NameServerDeleteView,
11
+ NameServerBulkImportView,
12
+ NameServerBulkEditView,
13
+ NameServerBulkDeleteView,
14
+ NameServerZoneListView,
15
+ NameServerSOAZoneListView,
16
+ )
17
+
18
+ nameserver_urlpatterns = [
19
+ path("nameservers/", NameServerListView.as_view(), name="nameserver_list"),
20
+ path("nameservers/add/", NameServerEditView.as_view(), name="nameserver_add"),
21
+ path(
22
+ "nameservers/import/",
23
+ NameServerBulkImportView.as_view(),
24
+ name="nameserver_import",
25
+ ),
26
+ path(
27
+ "nameservers/edit/",
28
+ NameServerBulkEditView.as_view(),
29
+ name="nameserver_bulk_edit",
30
+ ),
31
+ path(
32
+ "nameservers/delete/",
33
+ NameServerBulkDeleteView.as_view(),
34
+ name="nameserver_bulk_delete",
35
+ ),
36
+ path("nameservers/<int:pk>/", NameServerView.as_view(), name="nameserver"),
37
+ path(
38
+ "nameservers/<int:pk>/edit",
39
+ NameServerEditView.as_view(),
40
+ name="nameserver_edit",
41
+ ),
42
+ path(
43
+ "nameservers/<int:pk>/delete",
44
+ NameServerDeleteView.as_view(),
45
+ name="nameserver_delete",
46
+ ),
47
+ path(
48
+ "nameservers/<int:pk>/journal/",
49
+ ObjectJournalView.as_view(),
50
+ name="nameserver_journal",
51
+ kwargs={"model": NameServer},
52
+ ),
53
+ path(
54
+ "nameservers/<int:pk>/changelog/",
55
+ ObjectChangeLogView.as_view(),
56
+ name="nameserver_changelog",
57
+ kwargs={"model": NameServer},
58
+ ),
59
+ path(
60
+ "nameservers/<int:pk>/zones/",
61
+ NameServerZoneListView.as_view(),
62
+ name="nameserver_zones",
63
+ ),
64
+ path(
65
+ "nameservers/<int:pk>/soazones/",
66
+ NameServerSOAZoneListView.as_view(),
67
+ name="nameserver_soa_zones",
68
+ ),
69
+ ]