netbox-plugin-dns 0.21.4__py3-none-any.whl → 1.4.7__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.
Files changed (232) hide show
  1. netbox_dns/__init__.py +106 -41
  2. netbox_dns/api/field_serializers.py +25 -0
  3. netbox_dns/api/nested_serializers.py +95 -52
  4. netbox_dns/api/serializers.py +14 -296
  5. netbox_dns/api/serializers_/__init__.py +0 -0
  6. netbox_dns/api/serializers_/dnssec_key_template.py +69 -0
  7. netbox_dns/api/serializers_/dnssec_policy.py +165 -0
  8. netbox_dns/api/serializers_/nameserver.py +56 -0
  9. netbox_dns/api/serializers_/prefix.py +18 -0
  10. netbox_dns/api/serializers_/record.py +105 -0
  11. netbox_dns/api/serializers_/record_template.py +71 -0
  12. netbox_dns/api/serializers_/registrar.py +45 -0
  13. netbox_dns/api/serializers_/registration_contact.py +50 -0
  14. netbox_dns/api/serializers_/view.py +81 -0
  15. netbox_dns/api/serializers_/zone.py +247 -0
  16. netbox_dns/api/serializers_/zone_template.py +157 -0
  17. netbox_dns/api/urls.py +13 -2
  18. netbox_dns/api/views.py +96 -58
  19. netbox_dns/choices/__init__.py +4 -0
  20. netbox_dns/choices/dnssec_key_template.py +67 -0
  21. netbox_dns/choices/dnssec_policy.py +40 -0
  22. netbox_dns/choices/record.py +104 -0
  23. netbox_dns/choices/utilities.py +4 -0
  24. netbox_dns/choices/zone.py +119 -0
  25. netbox_dns/fields/__init__.py +4 -0
  26. netbox_dns/fields/address.py +22 -16
  27. netbox_dns/fields/choice_array.py +33 -0
  28. netbox_dns/fields/ipam.py +15 -0
  29. netbox_dns/fields/network.py +42 -18
  30. netbox_dns/fields/rfc2317.py +97 -0
  31. netbox_dns/fields/timeperiod.py +33 -0
  32. netbox_dns/filters.py +7 -0
  33. netbox_dns/filtersets/__init__.py +12 -0
  34. netbox_dns/filtersets/dnssec_key_template.py +57 -0
  35. netbox_dns/filtersets/dnssec_policy.py +101 -0
  36. netbox_dns/filtersets/nameserver.py +46 -0
  37. netbox_dns/filtersets/record.py +135 -0
  38. netbox_dns/filtersets/record_template.py +59 -0
  39. netbox_dns/{filters → filtersets}/registrar.py +8 -1
  40. netbox_dns/{filters/contact.py → filtersets/registration_contact.py} +9 -3
  41. netbox_dns/filtersets/view.py +45 -0
  42. netbox_dns/filtersets/zone.py +254 -0
  43. netbox_dns/filtersets/zone_template.py +165 -0
  44. netbox_dns/forms/__init__.py +5 -1
  45. netbox_dns/forms/dnssec_key_template.py +250 -0
  46. netbox_dns/forms/dnssec_policy.py +654 -0
  47. netbox_dns/forms/nameserver.py +121 -27
  48. netbox_dns/forms/record.py +215 -104
  49. netbox_dns/forms/record_template.py +285 -0
  50. netbox_dns/forms/registrar.py +108 -31
  51. netbox_dns/forms/registration_contact.py +282 -0
  52. netbox_dns/forms/view.py +331 -20
  53. netbox_dns/forms/zone.py +769 -373
  54. netbox_dns/forms/zone_template.py +463 -0
  55. netbox_dns/graphql/__init__.py +25 -22
  56. netbox_dns/graphql/enums.py +41 -0
  57. netbox_dns/graphql/filter_lookups.py +13 -0
  58. netbox_dns/graphql/filters/__init__.py +12 -0
  59. netbox_dns/graphql/filters/dnssec_key_template.py +63 -0
  60. netbox_dns/graphql/filters/dnssec_policy.py +124 -0
  61. netbox_dns/graphql/filters/nameserver.py +32 -0
  62. netbox_dns/graphql/filters/record.py +89 -0
  63. netbox_dns/graphql/filters/record_template.py +55 -0
  64. netbox_dns/graphql/filters/registrar.py +30 -0
  65. netbox_dns/graphql/filters/registration_contact.py +27 -0
  66. netbox_dns/graphql/filters/view.py +28 -0
  67. netbox_dns/graphql/filters/zone.py +147 -0
  68. netbox_dns/graphql/filters/zone_template.py +97 -0
  69. netbox_dns/graphql/schema.py +89 -7
  70. netbox_dns/graphql/types.py +355 -0
  71. netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
  72. netbox_dns/locale/en/LC_MESSAGES/django.mo +0 -0
  73. netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
  74. netbox_dns/management/commands/cleanup_database.py +175 -156
  75. netbox_dns/management/commands/cleanup_rrset_ttl.py +64 -0
  76. netbox_dns/management/commands/rebuild_dnssync.py +23 -0
  77. netbox_dns/management/commands/setup_dnssync.py +140 -0
  78. netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -27
  79. netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +557 -0
  80. netbox_dns/migrations/{0013_add_nameserver_zone_record_description.py → 0002_contact_description_registrar_description.py} +4 -9
  81. netbox_dns/migrations/0003_default_view.py +15 -0
  82. netbox_dns/migrations/0004_create_and_assign_default_view.py +26 -0
  83. netbox_dns/migrations/0005_alter_zone_view_not_null.py +18 -0
  84. netbox_dns/migrations/0006_templating.py +172 -0
  85. netbox_dns/migrations/0007_alter_ordering_options.py +25 -0
  86. netbox_dns/migrations/0008_view_prefixes.py +18 -0
  87. netbox_dns/migrations/0009_rename_contact_registrationcontact.py +36 -0
  88. netbox_dns/migrations/0010_view_ip_address_filter.py +18 -0
  89. netbox_dns/migrations/0011_rename_related_fields.py +63 -0
  90. netbox_dns/migrations/0012_natural_ordering.py +88 -0
  91. netbox_dns/migrations/0013_zonetemplate_soa_mname_zonetemplate_soa_rname.py +30 -0
  92. netbox_dns/migrations/0014_alter_unique_constraints_lowercase.py +42 -0
  93. netbox_dns/migrations/0015_dnssec.py +168 -0
  94. netbox_dns/migrations/{0015_add_record_status.py → 0016_dnssec_policy_status.py} +5 -4
  95. netbox_dns/migrations/0017_dnssec_policy_zone_zone_template.py +41 -0
  96. netbox_dns/migrations/0018_zone_domain_status_zone_expiration_date.py +23 -0
  97. netbox_dns/migrations/0019_dnssecpolicy_parental_agents.py +25 -0
  98. netbox_dns/migrations/0020_netbox_3_4.py +1 -1
  99. netbox_dns/migrations/0020_remove_dnssecpolicy_parental_agents_and_more.py +29 -0
  100. netbox_dns/migrations/0021_alter_record_ptr_record.py +25 -0
  101. netbox_dns/migrations/0021_record_ip_address.py +1 -1
  102. netbox_dns/migrations/0022_alter_record_ipam_ip_address.py +26 -0
  103. netbox_dns/migrations/0023_disable_ptr_false.py +27 -0
  104. netbox_dns/migrations/0024_zonetemplate_parental_agents.py +25 -0
  105. netbox_dns/migrations/0025_remove_zone_inline_signing_and_more.py +22 -0
  106. netbox_dns/migrations/0026_alter_dnssecpolicy_nsec3_opt_out.py +18 -0
  107. netbox_dns/migrations/0026_domain_registration.py +1 -1
  108. netbox_dns/migrations/0027_zone_comments.py +18 -0
  109. netbox_dns/migrations/0028_alter_zone_default_ttl_alter_zone_soa_minimum_and_more.py +54 -0
  110. netbox_dns/migrations/0028_rfc2317_fields.py +44 -0
  111. netbox_dns/migrations/0029_alter_registrationcontact_street.py +18 -0
  112. netbox_dns/migrations/0029_record_fqdn.py +30 -0
  113. netbox_dns/mixins/__init__.py +1 -0
  114. netbox_dns/mixins/object_modification.py +57 -0
  115. netbox_dns/models/__init__.py +5 -1
  116. netbox_dns/models/dnssec_key_template.py +114 -0
  117. netbox_dns/models/dnssec_policy.py +203 -0
  118. netbox_dns/models/nameserver.py +61 -30
  119. netbox_dns/models/record.py +781 -234
  120. netbox_dns/models/record_template.py +198 -0
  121. netbox_dns/models/registrar.py +34 -15
  122. netbox_dns/models/{contact.py → registration_contact.py} +72 -43
  123. netbox_dns/models/view.py +129 -9
  124. netbox_dns/models/zone.py +806 -242
  125. netbox_dns/models/zone_template.py +209 -0
  126. netbox_dns/navigation.py +176 -76
  127. netbox_dns/signals/__init__.py +0 -0
  128. netbox_dns/signals/dnssec.py +32 -0
  129. netbox_dns/signals/ipam_dnssync.py +216 -0
  130. netbox_dns/tables/__init__.py +5 -1
  131. netbox_dns/tables/dnssec_key_template.py +49 -0
  132. netbox_dns/tables/dnssec_policy.py +140 -0
  133. netbox_dns/tables/ipam_dnssync.py +12 -0
  134. netbox_dns/tables/nameserver.py +14 -17
  135. netbox_dns/tables/record.py +117 -59
  136. netbox_dns/tables/record_template.py +91 -0
  137. netbox_dns/tables/registrar.py +20 -10
  138. netbox_dns/tables/{contact.py → registration_contact.py} +22 -11
  139. netbox_dns/tables/view.py +47 -3
  140. netbox_dns/tables/zone.py +62 -31
  141. netbox_dns/tables/zone_template.py +78 -0
  142. netbox_dns/template_content.py +124 -38
  143. netbox_dns/templates/netbox_dns/dnsseckeytemplate.html +70 -0
  144. netbox_dns/templates/netbox_dns/dnssecpolicy.html +163 -0
  145. netbox_dns/templates/netbox_dns/nameserver.html +31 -28
  146. netbox_dns/templates/netbox_dns/record/managed.html +2 -1
  147. netbox_dns/templates/netbox_dns/record/related.html +17 -6
  148. netbox_dns/templates/netbox_dns/record.html +140 -93
  149. netbox_dns/templates/netbox_dns/recordtemplate.html +96 -0
  150. netbox_dns/templates/netbox_dns/registrar.html +41 -34
  151. netbox_dns/templates/netbox_dns/registrationcontact.html +76 -0
  152. netbox_dns/templates/netbox_dns/view/button.html +10 -0
  153. netbox_dns/templates/netbox_dns/view/prefix.html +44 -0
  154. netbox_dns/templates/netbox_dns/view/related.html +33 -0
  155. netbox_dns/templates/netbox_dns/view.html +62 -18
  156. netbox_dns/templates/netbox_dns/zone/base.html +6 -3
  157. netbox_dns/templates/netbox_dns/zone/child.html +6 -5
  158. netbox_dns/templates/netbox_dns/zone/child_zone.html +18 -0
  159. netbox_dns/templates/netbox_dns/zone/delegation_record.html +18 -0
  160. netbox_dns/templates/netbox_dns/zone/managed_record.html +1 -1
  161. netbox_dns/templates/netbox_dns/zone/record.html +6 -5
  162. netbox_dns/templates/netbox_dns/zone/registration.html +43 -24
  163. netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +18 -0
  164. netbox_dns/templates/netbox_dns/zone.html +178 -119
  165. netbox_dns/templates/netbox_dns/zonetemplate/child.html +46 -0
  166. netbox_dns/templates/netbox_dns/zonetemplate.html +124 -0
  167. netbox_dns/templatetags/netbox_dns.py +10 -0
  168. netbox_dns/urls.py +50 -210
  169. netbox_dns/utilities/__init__.py +3 -0
  170. netbox_dns/{utilities.py → utilities/conversions.py} +55 -7
  171. netbox_dns/utilities/dns.py +11 -0
  172. netbox_dns/utilities/ipam_dnssync.py +370 -0
  173. netbox_dns/validators/__init__.py +4 -0
  174. netbox_dns/validators/dns_name.py +116 -0
  175. netbox_dns/validators/dns_value.py +147 -0
  176. netbox_dns/validators/dnssec.py +148 -0
  177. netbox_dns/validators/rfc2317.py +28 -0
  178. netbox_dns/views/__init__.py +5 -1
  179. netbox_dns/views/dnssec_key_template.py +78 -0
  180. netbox_dns/views/dnssec_policy.py +146 -0
  181. netbox_dns/views/nameserver.py +34 -15
  182. netbox_dns/views/record.py +156 -15
  183. netbox_dns/views/record_template.py +93 -0
  184. netbox_dns/views/registrar.py +32 -13
  185. netbox_dns/views/registration_contact.py +101 -0
  186. netbox_dns/views/view.py +58 -14
  187. netbox_dns/views/zone.py +130 -33
  188. netbox_dns/views/zone_template.py +82 -0
  189. netbox_plugin_dns-1.4.7.dist-info/METADATA +132 -0
  190. netbox_plugin_dns-1.4.7.dist-info/RECORD +201 -0
  191. {netbox_plugin_dns-0.21.4.dist-info → netbox_plugin_dns-1.4.7.dist-info}/WHEEL +2 -1
  192. {netbox_plugin_dns-0.21.4.dist-info → netbox_plugin_dns-1.4.7.dist-info/licenses}/LICENSE +2 -1
  193. netbox_plugin_dns-1.4.7.dist-info/top_level.txt +1 -0
  194. netbox_dns/filters/__init__.py +0 -6
  195. netbox_dns/filters/nameserver.py +0 -18
  196. netbox_dns/filters/record.py +0 -53
  197. netbox_dns/filters/view.py +0 -18
  198. netbox_dns/filters/zone.py +0 -112
  199. netbox_dns/forms/contact.py +0 -211
  200. netbox_dns/graphql/contact.py +0 -19
  201. netbox_dns/graphql/nameserver.py +0 -19
  202. netbox_dns/graphql/record.py +0 -19
  203. netbox_dns/graphql/registrar.py +0 -19
  204. netbox_dns/graphql/view.py +0 -19
  205. netbox_dns/graphql/zone.py +0 -19
  206. netbox_dns/management/commands/setup_coupling.py +0 -75
  207. netbox_dns/management/commands/update_soa.py +0 -22
  208. netbox_dns/middleware.py +0 -226
  209. netbox_dns/migrations/0001_initial.py +0 -115
  210. netbox_dns/migrations/0002_zone_default_ttl.py +0 -18
  211. netbox_dns/migrations/0003_soa_managed_records.py +0 -112
  212. netbox_dns/migrations/0004_create_ptr_for_a_aaaa_records.py +0 -80
  213. netbox_dns/migrations/0005_update_ns_records.py +0 -41
  214. netbox_dns/migrations/0006_zone_soa_serial_auto.py +0 -29
  215. netbox_dns/migrations/0007_alter_zone_soa_serial_auto.py +0 -17
  216. netbox_dns/migrations/0008_zone_status_names.py +0 -21
  217. netbox_dns/migrations/0009_netbox32.py +0 -71
  218. netbox_dns/migrations/0010_update_soa_records.py +0 -58
  219. netbox_dns/migrations/0011_add_view_model.py +0 -70
  220. netbox_dns/migrations/0012_adjust_zone_and_record.py +0 -17
  221. netbox_dns/migrations/0014_add_view_description.py +0 -16
  222. netbox_dns/migrations/0016_cleanup_ptr_records.py +0 -38
  223. netbox_dns/migrations/0017_alter_record_ttl.py +0 -17
  224. netbox_dns/migrations/0018_zone_arpa_network.py +0 -51
  225. netbox_dns/migrations/0019_update_ns_ttl.py +0 -19
  226. netbox_dns/templates/netbox_dns/contact.html +0 -71
  227. netbox_dns/templates/netbox_dns/related_dns_objects.html +0 -21
  228. netbox_dns/templatetags/view_helpers.py +0 -15
  229. netbox_dns/validators.py +0 -57
  230. netbox_dns/views/contact.py +0 -83
  231. netbox_plugin_dns-0.21.4.dist-info/METADATA +0 -101
  232. netbox_plugin_dns-0.21.4.dist-info/RECORD +0 -110
@@ -1,36 +1,80 @@
1
1
  {% extends 'generic/object.html' %}
2
+ {% load i18n %}
2
3
 
3
4
  {% block content %}
4
5
  <div class="row">
5
6
  <div class="col col-md-6">
6
7
  <div class="card">
7
- <h5 class="card-header">View</h5>
8
+ <h5 class="card-header">{% trans "View" %}</h5>
9
+ <table class="table table-hover attr-table">
10
+ <tr>
11
+ <th scope="row">{% trans "Name" %}</th>
12
+ <td>{{ object.name }}</td>
13
+ </tr>
14
+ <tr>
15
+ <th scope="row">{% trans "Default View" %}</th>
16
+ <td>{% checkmark object.default_view %}</td>
17
+ </tr>
18
+ {% if object.description %}
19
+ <tr>
20
+ <th scope="row">{% trans "Description" %}</th>
21
+ <td style="word-break:break-all;">{{ object.description }}</td>
22
+ </tr>
23
+ {% endif %}
24
+ {% if object.tenant %}
25
+ <tr>
26
+ <th scope="row">{% trans "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
+ {% endif %}
35
+ </table>
36
+ </div>
37
+ {% include 'inc/panels/custom_fields.html' %}
38
+ </div>
39
+ <div class="col col-md-6">
40
+ {% include 'inc/panels/tags.html' %}
41
+ {% if not settings.PLUGINS_CONFIG.netbox_dns.dnssync_disabled %}
42
+ <div class="card">
43
+ <h5 class="card-header">{% trans "IPAM Prefixes" %}</h5>
8
44
  <div class="card-body">
9
45
  <table class="table table-hover attr-table">
46
+ {% if object.prefixes.exists %}
47
+ {% for prefix in object.prefixes.all %}
10
48
  <tr>
11
- <th scope="row">Name</th>
12
- <td>{{ object.name }}</td>
13
- </tr>
14
- <tr>
15
- <th scope="row">Tenant</th>
16
49
  <td>
17
- {% if object.tenant.group %}
18
- {{ object.tenant.group|linkify }} /
19
- {% endif %}
20
- {{ object.tenant|linkify|placeholder }}
50
+ {{ prefix|linkify }}
21
51
  </td>
52
+ {% if prefix.vrf %}
53
+ <td>
54
+ {{ prefix.vrf|linkify }}
55
+ </td>
56
+ {% else %}
57
+ <td>{% trans "Global" %}</td>
58
+ {% endif %}
22
59
  </tr>
23
- <tr>
24
- <th scope="row">Description</th>
25
- <td>{{ object.description }}</td>
26
- </tr>
60
+ {% endfor %}
61
+ {% else %}
62
+ <span class="text-muted">{% trans "No prefixes assigned" %}</span>
63
+ {% endif %}
27
64
  </table>
28
65
  </div>
29
66
  </div>
30
- {% include 'inc/panels/custom_fields.html' %}
31
- </div>
32
- <div class="col col-md-6">
33
- {% include 'inc/panels/tags.html' %}
67
+ <div class="card">
68
+ <h5 class="card-header">{% trans "IP Address Filters" %}</h5>
69
+ <div class="card-body">
70
+ {% if object.ip_address_filter %}
71
+ <pre>{{ object.ip_address_filter|json }}</pre>
72
+ {% else %}
73
+ <span class="text-muted">{% trans "No filters defined" %}</span>
74
+ {% endif %}
75
+ </div>
76
+ </div>
77
+ {% endif %}
34
78
  </div>
35
79
  </div>
36
80
  {% endblock %}
@@ -1,13 +1,16 @@
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
+ {% load i18n %}
6
7
 
7
8
  {% block extra_controls %}
8
9
  {% 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
10
+ <a href="{% url 'plugins:netbox_dns:record_add' %}?zone={{ object.pk }}&return_url={% url 'plugins:netbox_dns:zone_records' pk=object.pk %}">
11
+ <button type="submit" class="btn btn-primary" name="add-record">
12
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i>{% trans "Add Record" %}
13
+ </button>
11
14
  </a>
12
15
  {% endif %}
13
16
  {{ block.super }}
@@ -2,6 +2,7 @@
2
2
  {% load helpers %}
3
3
  {% load render_table from django_tables2 %}
4
4
  {% load perms %}
5
+ {% load i18n %}
5
6
 
6
7
  {% block content %}
7
8
  {% include 'inc/table_controls_htmx.html' with table_modal="ZoneTable_config" %}
@@ -11,7 +12,7 @@
11
12
  <input type="hidden" name="return_url" value="{% if return_url %}{{ return_url }}{% else %}{{ request.path }}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}{% endif %}" />
12
13
 
13
14
  <div class="card">
14
- <div class="card-body htmx-container table-responsive" id="object_list">
15
+ <div class="htmx-container table-responsive" id="object_list">
15
16
  {% include 'htmx/table.html' %}
16
17
  </div>
17
18
  </div>
@@ -22,13 +23,13 @@
22
23
  <div class="bulk-button-group">
23
24
  {% block bulk_buttons %}{% endblock %}
24
25
  {% 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">
26
- <i class="mdi mdi-pencil" aria-hidden="true"></i> Edit Selected
26
+ <button type="submit" name="_edit" formaction="{% url bulk_edit_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-warning">
27
+ <i class="mdi mdi-pencil" aria-hidden="true"></i> {% trans "Edit Selected" %}
27
28
  </button>
28
29
  {% endif %}
29
30
  {% 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">
31
- <i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> Delete Selected
31
+ <button type="submit" name="_delete" formaction="{% url bulk_delete_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-danger">
32
+ <i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> {% trans "Delete Selected" %}
32
33
  </button>
33
34
  {% endif %}
34
35
  </div>
@@ -0,0 +1,18 @@
1
+ {% extends 'netbox_dns/zone/base.html' %}
2
+ {% load helpers %}
3
+ {% load render_table from django_tables2 %}
4
+ {% load perms %}
5
+
6
+ {% block content %}
7
+ {% include 'inc/table_controls_htmx.html' with table_modal="ChildZoneTable_config" %}
8
+ <div class="card">
9
+ <div class="htmx-container table-responsive" id="object_list">
10
+ {% include 'htmx/table.html' %}
11
+ </div>
12
+ </div>
13
+ {% endblock %}
14
+
15
+ {% block modals %}
16
+ {{ block.super }}
17
+ {% table_config_form table %}
18
+ {% endblock modals %}
@@ -0,0 +1,18 @@
1
+ {% extends 'netbox_dns/zone/base.html' %}
2
+ {% load helpers %}
3
+ {% load render_table from django_tables2 %}
4
+ {% load perms %}
5
+
6
+ {% block content %}
7
+ {% include 'inc/table_controls_htmx.html' with table_modal="DelegationRecordTable_config" %}
8
+ <div class="card">
9
+ <div class="htmx-container table-responsive" id="object_list">
10
+ {% include 'htmx/table.html' %}
11
+ </div>
12
+ </div>
13
+ {% endblock %}
14
+
15
+ {% block modals %}
16
+ {{ block.super }}
17
+ {% table_config_form table %}
18
+ {% endblock modals %}
@@ -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>
@@ -2,6 +2,7 @@
2
2
  {% load helpers %}
3
3
  {% load render_table from django_tables2 %}
4
4
  {% load perms %}
5
+ {% load i18n %}
5
6
 
6
7
  {% block content %}
7
8
  {% include 'inc/table_controls_htmx.html' with table_modal="RecordTable_config" %}
@@ -11,7 +12,7 @@
11
12
  <input type="hidden" name="return_url" value="{% if return_url %}{{ return_url }}{% else %}{{ request.path }}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}{% endif %}" />
12
13
 
13
14
  <div class="card">
14
- <div class="card-body htmx-container table-responsive" id="object_list">
15
+ <div class="htmx-container table-responsive" id="object_list">
15
16
  {% include 'htmx/table.html' %}
16
17
  </div>
17
18
  </div>
@@ -22,13 +23,13 @@
22
23
  <div class="bulk-button-group">
23
24
  {% block bulk_buttons %}{% endblock %}
24
25
  {% 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">
26
- <i class="mdi mdi-pencil" aria-hidden="true"></i> Edit Selected
26
+ <button type="submit" name="_edit" formaction="{% url bulk_edit_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-warning">
27
+ <i class="mdi mdi-pencil" aria-hidden="true"></i> {% trans "Edit Selected" %}
27
28
  </button>
28
29
  {% endif %}
29
30
  {% 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">
31
- <i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> Delete Selected
31
+ <button type="submit" name="_delete" formaction="{% url bulk_delete_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-danger">
32
+ <i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> {% trans "Delete Selected" %}
32
33
  </button>
33
34
  {% endif %}
34
35
  </div>
@@ -1,36 +1,55 @@
1
1
  {% extends 'netbox_dns/zone/base.html' %}
2
2
  {% load helpers %}
3
+ {% load i18n %}
3
4
 
4
5
  {% block content %}
5
6
  <div class="card">
6
- <h5 class="card-header">Domain Registration</h5>
7
- <div class="card-body">
8
- <table class="table table-hover attr-table">
7
+ <h5 class="card-header">{% trans "Domain Registration" %}</h5>
8
+ <table class="table table-hover attr-table">
9
+ <tr>
10
+ <th scope="row">{% trans "Registrar" %}</th>
11
+ <td>{{ object.registrar|linkify|placeholder }}</td>
12
+ </tr>
13
+ <tr>
14
+ <th scope="row">{% trans "Registry Domain ID" %}</th>
15
+ <td>{{ object.registry_domain_id|placeholder }}</td>
16
+ </tr>
17
+ <tr>
18
+ <th scope="row">{% trans "Expiration Date" %}</th>
19
+ <td>{{ object.expiration_date|placeholder }}</td>
20
+ </tr>
21
+ {% if expiration_warning %}
9
22
  <tr>
10
- <th scope="row">Registrar</th>
11
- <td>{{ object.registrar|linkify|placeholder }}</td>
23
+ <th class="text-warning" scope="row">{% trans "Warning" %}</th>
24
+ <td class="text-warning">{{ expiration_warning }}</td>
12
25
  </tr>
26
+ {% elif expiration_error %}
13
27
  <tr>
14
- <th scope="row">Registry Domain ID</th>
15
- <td>{{ object.registry_domain_id|placeholder }}</td>
28
+ <th class="text-danger" scope="row">{% trans "Error" %}</th>
29
+ <td class="text-danger">{{ expiration_error }}</td>
16
30
  </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>
31
+ {% endif %}
32
+ <tr>
33
+ <th scope="row">{% trans "Domain Status" %}</th>
34
+ <td>{% badge object.get_domain_status_display bg_color=object.get_domain_status_color %}</td>
35
+ </tr>
36
+ <tr>
37
+ <th scope="row">{% trans "Registrant" %}</th>
38
+ <td>{{ object.registrant|linkify|placeholder }}</td>
39
+ </tr>
40
+ <tr>
41
+ <th scope="row">{% trans "Administrative Contact" %}</th>
42
+ <td>{{ object.admin_c|linkify|placeholder }}</td>
43
+ </tr>
44
+ <tr>
45
+ <th scope="row">{% trans "Technical Contact" %}</th>
46
+ <td>{{ object.tech_c|linkify|placeholder }}</td>
47
+ </tr>
48
+ <tr>
49
+ <th scope="row">{% trans "Billing Contact" %}</th>
50
+ <td>{{ object.billing_c|linkify|placeholder }}</td>
51
+ </tr>
52
+ </table>
34
53
  </div>
35
54
  </div>
36
55
  {% endblock %}
@@ -0,0 +1,18 @@
1
+ {% extends 'netbox_dns/zone/base.html' %}
2
+ {% load helpers %}
3
+ {% load render_table from django_tables2 %}
4
+ {% load perms %}
5
+
6
+ {% block content %}
7
+ {% include 'inc/table_controls_htmx.html' with table_modal="RFC2317ChildZoneTable_config" %}
8
+ <div class="card">
9
+ <div class="htmx-container table-responsive" id="object_list">
10
+ {% include 'htmx/table.html' %}
11
+ </div>
12
+ </div>
13
+ {% endblock %}
14
+
15
+ {% block modals %}
16
+ {{ block.super }}
17
+ {% table_config_form table %}
18
+ {% endblock modals %}