netbox-plugin-dns 1.2.2__tar.gz → 1.2.3__tar.gz

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 (154) hide show
  1. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/PKG-INFO +3 -2
  2. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/README.md +2 -1
  3. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/__init__.py +1 -1
  4. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/forms/zone.py +8 -1
  5. netbox_plugin_dns-1.2.3/netbox_dns/models/__init__.py +8 -0
  6. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/nameserver.html +2 -0
  7. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/record.html +20 -20
  8. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/view.html +2 -0
  9. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/zone.html +2 -4
  10. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/zonetemplate.html +2 -4
  11. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/utilities/conversions.py +25 -0
  12. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/validators/dns_name.py +9 -0
  13. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/views/nameserver.py +1 -0
  14. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/views/record.py +1 -0
  15. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/views/record_template.py +1 -0
  16. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/views/registrar.py +1 -0
  17. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/views/registration_contact.py +1 -0
  18. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/views/view.py +1 -0
  19. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/views/zone.py +1 -0
  20. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/views/zone_template.py +1 -0
  21. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_plugin_dns.egg-info/PKG-INFO +3 -2
  22. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/pyproject.toml +1 -1
  23. netbox_plugin_dns-1.2.2/netbox_dns/models/__init__.py +0 -13
  24. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/LICENSE +0 -0
  25. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/nested_serializers.py +0 -0
  26. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/serializers.py +0 -0
  27. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/serializers_/__init__.py +0 -0
  28. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/serializers_/nameserver.py +0 -0
  29. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/serializers_/prefix.py +0 -0
  30. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/serializers_/record.py +0 -0
  31. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/serializers_/record_template.py +0 -0
  32. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/serializers_/registrar.py +0 -0
  33. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/serializers_/registration_contact.py +0 -0
  34. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/serializers_/view.py +0 -0
  35. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/serializers_/zone.py +0 -0
  36. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/serializers_/zone_template.py +0 -0
  37. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/urls.py +0 -0
  38. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/api/views.py +0 -0
  39. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/apps.py +0 -0
  40. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/choices/__init__.py +0 -0
  41. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/choices/record.py +0 -0
  42. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/choices/zone.py +0 -0
  43. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/fields/__init__.py +0 -0
  44. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/fields/address.py +0 -0
  45. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/fields/ipam.py +0 -0
  46. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/fields/network.py +0 -0
  47. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/fields/rfc2317.py +0 -0
  48. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/filtersets/__init__.py +0 -0
  49. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/filtersets/nameserver.py +0 -0
  50. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/filtersets/record.py +0 -0
  51. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/filtersets/record_template.py +0 -0
  52. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/filtersets/registrar.py +0 -0
  53. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/filtersets/registration_contact.py +0 -0
  54. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/filtersets/view.py +0 -0
  55. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/filtersets/zone.py +0 -0
  56. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/filtersets/zone_template.py +0 -0
  57. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/forms/__init__.py +0 -0
  58. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/forms/nameserver.py +0 -0
  59. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/forms/record.py +0 -0
  60. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/forms/record_template.py +0 -0
  61. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/forms/registrar.py +0 -0
  62. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/forms/registration_contact.py +0 -0
  63. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/forms/view.py +0 -0
  64. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/forms/zone_template.py +0 -0
  65. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/graphql/__init__.py +0 -0
  66. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/graphql/filters.py +0 -0
  67. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/graphql/schema.py +0 -0
  68. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/graphql/types.py +0 -0
  69. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
  70. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/locale/en/LC_MESSAGES/django.mo +0 -0
  71. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/management/commands/cleanup_database.py +0 -0
  72. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/management/commands/cleanup_rrset_ttl.py +0 -0
  73. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/management/commands/rebuild_dnssync.py +0 -0
  74. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/management/commands/setup_dnssync.py +0 -0
  75. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/management/commands/update_soa.py +0 -0
  76. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -0
  77. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +0 -0
  78. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0002_contact_description_registrar_description.py +0 -0
  79. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0003_default_view.py +0 -0
  80. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0004_create_and_assign_default_view.py +0 -0
  81. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0005_alter_zone_view_not_null.py +0 -0
  82. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0006_templating.py +0 -0
  83. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0007_alter_ordering_options.py +0 -0
  84. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0008_view_prefixes.py +0 -0
  85. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0009_rename_contact_registrationcontact.py +0 -0
  86. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0010_view_ip_address_filter.py +0 -0
  87. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0011_rename_related_fields.py +0 -0
  88. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0012_natural_ordering.py +0 -0
  89. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0020_netbox_3_4.py +0 -0
  90. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0021_record_ip_address.py +0 -0
  91. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0022_search.py +0 -0
  92. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0023_alter_record_value.py +0 -0
  93. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0024_tenancy.py +0 -0
  94. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0025_ipam_coupling_cf.py +0 -0
  95. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0026_domain_registration.py +0 -0
  96. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0027_alter_registrar_iana_id.py +0 -0
  97. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0028_rfc2317_fields.py +0 -0
  98. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/0029_record_fqdn.py +0 -0
  99. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/migrations/__init__.py +0 -0
  100. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/mixins/__init__.py +0 -0
  101. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/mixins/object_modification.py +0 -0
  102. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/models/nameserver.py +0 -0
  103. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/models/record.py +0 -0
  104. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/models/record_template.py +0 -0
  105. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/models/registrar.py +0 -0
  106. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/models/registration_contact.py +0 -0
  107. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/models/view.py +0 -0
  108. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/models/zone.py +0 -0
  109. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/models/zone_template.py +0 -0
  110. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/navigation.py +0 -0
  111. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/signals/__init__.py +0 -0
  112. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/signals/ipam_dnssync.py +0 -0
  113. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/tables/__init__.py +0 -0
  114. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/tables/ipam_dnssync.py +0 -0
  115. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/tables/nameserver.py +0 -0
  116. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/tables/record.py +0 -0
  117. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/tables/record_template.py +0 -0
  118. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/tables/registrar.py +0 -0
  119. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/tables/registration_contact.py +0 -0
  120. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/tables/view.py +0 -0
  121. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/tables/zone.py +0 -0
  122. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/tables/zone_template.py +0 -0
  123. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/template_content.py +0 -0
  124. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/record/managed.html +0 -0
  125. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/record/related.html +0 -0
  126. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/recordtemplate.html +6 -6
  127. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/registrar.html +0 -0
  128. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/registrationcontact.html +0 -0
  129. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/view/button.html +0 -0
  130. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/view/prefix.html +0 -0
  131. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/view/related.html +0 -0
  132. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/zone/base.html +0 -0
  133. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/zone/child.html +0 -0
  134. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/zone/child_zone.html +0 -0
  135. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/zone/delegation_record.html +0 -0
  136. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/zone/managed_record.html +0 -0
  137. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/zone/record.html +0 -0
  138. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/zone/registration.html +0 -0
  139. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +0 -0
  140. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templatetags/__init__.py +0 -0
  141. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/templatetags/netbox_dns.py +0 -0
  142. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/urls.py +0 -0
  143. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/utilities/__init__.py +0 -0
  144. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/utilities/dns.py +0 -0
  145. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/utilities/ipam_dnssync.py +0 -0
  146. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/validators/__init__.py +0 -0
  147. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/validators/dns_value.py +0 -0
  148. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/validators/rfc2317.py +0 -0
  149. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_dns/views/__init__.py +0 -0
  150. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_plugin_dns.egg-info/SOURCES.txt +0 -0
  151. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_plugin_dns.egg-info/dependency_links.txt +0 -0
  152. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_plugin_dns.egg-info/requires.txt +0 -0
  153. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/netbox_plugin_dns.egg-info/top_level.txt +0 -0
  154. {netbox_plugin_dns-1.2.2 → netbox_plugin_dns-1.2.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: netbox-plugin-dns
3
- Version: 1.2.2
3
+ Version: 1.2.3
4
4
  Summary: NetBox DNS is a NetBox plugin for managing DNS data.
5
5
  Author-email: Peter Eckel <pete@netbox-dns.org>
6
6
  Project-URL: Homepage, https://github.com/peteeckel/netbox-plugin-dns
@@ -69,7 +69,7 @@ For integration with a large number of DNS server implementations integration to
69
69
  * NetBox 4.2.0 or higher
70
70
  * Python 3.10 or higher
71
71
 
72
- ## Compatibility with earlier NetBox Versions
72
+ ## Compatibility with NetBox Versions
73
73
 
74
74
  NetBox Version | NetBox DNS Version | Comment
75
75
  -------------- | ------------------ | -------
@@ -78,6 +78,7 @@ NetBox Version | NetBox DNS Version | Comment
78
78
  3.7 | 0.22 |
79
79
  4.0 - 4.1 | 1.0 | Supports legacy IPAM Coupling
80
80
  4.0 - 4.1 | 1.1 | Supports IPAM DNSsync
81
+ 4.2 | 1.2 |
81
82
 
82
83
  ## Installation & Configuration
83
84
 
@@ -53,7 +53,7 @@ For integration with a large number of DNS server implementations integration to
53
53
  * NetBox 4.2.0 or higher
54
54
  * Python 3.10 or higher
55
55
 
56
- ## Compatibility with earlier NetBox Versions
56
+ ## Compatibility with NetBox Versions
57
57
 
58
58
  NetBox Version | NetBox DNS Version | Comment
59
59
  -------------- | ------------------ | -------
@@ -62,6 +62,7 @@ NetBox Version | NetBox DNS Version | Comment
62
62
  3.7 | 0.22 |
63
63
  4.0 - 4.1 | 1.0 | Supports legacy IPAM Coupling
64
64
  4.0 - 4.1 | 1.1 | Supports IPAM DNSsync
65
+ 4.2 | 1.2 |
65
66
 
66
67
  ## Installation & Configuration
67
68
 
@@ -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.2.2"
10
+ __version__ = "1.2.3"
11
11
 
12
12
 
13
13
  def _check_list(setting):
@@ -35,7 +35,7 @@ from netbox_dns.models import (
35
35
  ZoneTemplate,
36
36
  )
37
37
  from netbox_dns.choices import ZoneStatusChoices
38
- from netbox_dns.utilities import name_to_unicode
38
+ from netbox_dns.utilities import name_to_unicode, network_to_reverse
39
39
  from netbox_dns.fields import RFC2317NetworkFormField
40
40
  from netbox_dns.validators import validate_ipv4, validate_prefix, validate_rfc2317
41
41
 
@@ -307,6 +307,13 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
307
307
  else self.initial["default_ttl"]
308
308
  )
309
309
 
310
+ def clean_name(self):
311
+ name = self.cleaned_data["name"]
312
+ if reverse_name := network_to_reverse(name):
313
+ return reverse_name
314
+ else:
315
+ return name
316
+
310
317
  class Meta:
311
318
  model = Zone
312
319
 
@@ -0,0 +1,8 @@
1
+ from .zone import *
2
+ from .nameserver import *
3
+ from .record import *
4
+ from .view import *
5
+ from .registration_contact import *
6
+ from .registrar import *
7
+ from .zone_template import *
8
+ from .record_template import *
@@ -23,6 +23,7 @@
23
23
  <td style="word-break:break-all;">{{ object.description }}</td>
24
24
  </tr>
25
25
  {% endif %}
26
+ {% if object.tenant %}
26
27
  <tr>
27
28
  <th scope="row">{% trans "Tenant" %}</th>
28
29
  <td>
@@ -32,6 +33,7 @@
32
33
  {{ object.tenant|linkify|placeholder }}
33
34
  </td>
34
35
  </tr>
36
+ {% endif %}
35
37
  </table>
36
38
  </div>
37
39
  {% include 'inc/panels/custom_fields.html' %}
@@ -63,17 +63,6 @@
63
63
  <td><a href="{% url 'plugins:netbox_dns:zone_records' pk=object.zone.pk %}">{{ object.zone }}</a></td>
64
64
  {% endif %}
65
65
  </tr>
66
- {% if not object.managed or object.tenant %}
67
- <tr>
68
- <th scope="row">{% trans "Tenant" %}</th>
69
- <td>
70
- {% if object.tenant.group %}
71
- {{ object.tenant.group|linkify }} /
72
- {% endif %}
73
- {{ object.tenant|linkify|placeholder }}
74
- </td>
75
- </tr>
76
- {% endif %}
77
66
  <tr>
78
67
  <th scope="row">{% trans "Type" %}</th>
79
68
  <td>{{ object.type }}</td>
@@ -82,16 +71,33 @@
82
71
  <th scope="row">{% trans "Value" %}</th>
83
72
  <td style="word-break:break-all;">{{ object.value }}</td>
84
73
  </tr>
74
+ {% if unicode_value %}
75
+ <tr>
76
+ <th scope="row">{% trans "Unicode Value" %}</th>
77
+ <td style="word-break:break-all;">{{ unicode_value }}</td>
78
+ </tr>
79
+ {% endif %}
85
80
  {% if cname_warning %}
86
81
  <tr class="text-warning">
87
82
  <th scope="row">{% trans "Warning" %}</th>
88
83
  <td>{{ cname_warning }}</td>
89
84
  </tr>
90
85
  {% endif %}
91
- {% if unicode_value %}
86
+ {% if object.description %}
92
87
  <tr>
93
- <th scope="row">{% trans "Unicode Value" %}</th>
94
- <td style="word-break:break-all;">{{ unicode_value }}</td>
88
+ <th scope="row">{% trans "Description" %}</th>
89
+ <td style="word-break:break-all;">{{ object.description }}</td>
90
+ </tr>
91
+ {% endif %}
92
+ {% if object.tenant %}
93
+ <tr>
94
+ <th scope="row">{% trans "Tenant" %}</th>
95
+ <td>
96
+ {% if object.tenant.group %}
97
+ {{ object.tenant.group|linkify }} /
98
+ {% endif %}
99
+ {{ object.tenant|linkify|placeholder }}
100
+ </td>
95
101
  </tr>
96
102
  {% endif %}
97
103
  <tr>
@@ -132,12 +138,6 @@
132
138
  <th scope="row">Status</th>
133
139
  <td>{% badge object.get_status_display bg_color=object.get_status_color %}</td>
134
140
  </tr>
135
- {% if object.description %}
136
- <tr>
137
- <th scope="row">{% trans "Description" %}</th>
138
- <td style="word-break:break-all;">{{ object.description }}</td>
139
- </tr>
140
- {% endif %}
141
141
  </table>
142
142
  </div>
143
143
  {% if cname_target_table %}
@@ -21,6 +21,7 @@
21
21
  <td style="word-break:break-all;">{{ object.description }}</td>
22
22
  </tr>
23
23
  {% endif %}
24
+ {% if object.tenant %}
24
25
  <tr>
25
26
  <th scope="row">{% trans "Tenant" %}</th>
26
27
  <td>
@@ -30,6 +31,7 @@
30
31
  {{ object.tenant|linkify|placeholder }}
31
32
  </td>
32
33
  </tr>
34
+ {% endif %}
33
35
  </table>
34
36
  </div>
35
37
  {% include 'inc/panels/custom_fields.html' %}
@@ -36,6 +36,7 @@
36
36
  <td style="word-break:break-all;">{{ object.description }}</td>
37
37
  </tr>
38
38
  {% endif %}
39
+ {% if object.tenant %}
39
40
  <tr>
40
41
  <th scope="row">{% trans "Tenant" %}</th>
41
42
  <td>
@@ -45,6 +46,7 @@
45
46
  {{ object.tenant|linkify|placeholder }}
46
47
  </td>
47
48
  </tr>
49
+ {% endif %}
48
50
  <tr>
49
51
  <th scope="row">{% trans "Status" %}</th>
50
52
  <td>{% badge object.get_status_display bg_color=object.get_status_color %}</td>
@@ -91,10 +93,6 @@
91
93
  <th scope="row">{% trans "Default TTL" %}</th>
92
94
  <td>{{ object.default_ttl }}</td>
93
95
  </tr>
94
- <tr>
95
- <th scope="row">{% trans "Description" %}</th>
96
- <td>{{ object.description }}</td>
97
- </tr>
98
96
  </table>
99
97
  </div>
100
98
 
@@ -21,6 +21,7 @@
21
21
  <td style="word-break:break-all;">{{ object.description }}</td>
22
22
  </tr>
23
23
  {% endif %}
24
+ {% if object.tenant %}
24
25
  <tr>
25
26
  <th scope="row">{% trans "Tenant" %}</th>
26
27
  <td>
@@ -30,6 +31,7 @@
30
31
  {{ object.tenant|linkify|placeholder }}
31
32
  </td>
32
33
  </tr>
34
+ {% endif %}
33
35
  <tr>
34
36
  <th scope="row">{% trans "Nameservers" %}</th>
35
37
  <td>
@@ -40,10 +42,6 @@
40
42
  </table>
41
43
  </td>
42
44
  </tr>
43
- <tr>
44
- <th scope="row">{% trans "Description" %}</th>
45
- <td>{{ object.description }}</td>
46
- </tr>
47
45
  </table>
48
46
  </div>
49
47
 
@@ -13,6 +13,7 @@ __all__ = (
13
13
  "name_to_unicode",
14
14
  "value_to_unicode",
15
15
  "normalize_name",
16
+ "network_to_reverse",
16
17
  )
17
18
 
18
19
 
@@ -81,3 +82,27 @@ def normalize_name(name):
81
82
 
82
83
  except DNSException as exc:
83
84
  raise NameFormatError from exc
85
+
86
+
87
+ def network_to_reverse(network):
88
+ try:
89
+ ip_network = IPNetwork(network)
90
+ except AddrFormatError:
91
+ return
92
+
93
+ if ip_network.first == ip_network.last:
94
+ return
95
+
96
+ labels = None
97
+ match ip_network.version:
98
+ case 4:
99
+ if not ip_network.prefixlen % 8:
100
+ labels = 3 + ip_network.prefixlen // 8
101
+ case 6:
102
+ if not ip_network.prefixlen % 4:
103
+ labels = 3 + ip_network.prefixlen // 4
104
+ case _:
105
+ return
106
+
107
+ if labels:
108
+ return ".".join(ip_network[0].reverse_dns.split(".")[-labels:])
@@ -1,4 +1,5 @@
1
1
  import re
2
+ from socket import inet_aton
2
3
 
3
4
  from django.core.exceptions import ValidationError
4
5
  from django.utils.translation import gettext as _
@@ -95,6 +96,14 @@ def validate_domain_name(
95
96
  ):
96
97
  return
97
98
 
99
+ try:
100
+ inet_aton(name)
101
+ raise ValidationError(
102
+ _("{name} is not a valid DNS domain name").format(name=name)
103
+ )
104
+ except OSError:
105
+ pass
106
+
98
107
  label, zone_label = _get_label(always_tolerant=always_tolerant)
99
108
  if zone_name:
100
109
  regex = rf"^{zone_label}(\.{zone_label})*\.?$"
@@ -83,6 +83,7 @@ class NameServerBulkEditView(generic.BulkEditView):
83
83
  @register_model_view(NameServer, "bulk_delete", path="delete", detail=False)
84
84
  class NameServerBulkDeleteView(generic.BulkDeleteView):
85
85
  queryset = NameServer.objects.all()
86
+ filterset = NameServerFilterSet
86
87
  table = NameServerTable
87
88
 
88
89
 
@@ -198,6 +198,7 @@ class RecordBulkEditView(generic.BulkEditView):
198
198
  @register_model_view(Record, "bulk_delete", path="delete", detail=False)
199
199
  class RecordBulkDeleteView(generic.BulkDeleteView):
200
200
  queryset = Record.objects.filter(managed=False)
201
+ filterset = RecordFilterSet
201
202
  table = RecordTable
202
203
 
203
204
 
@@ -90,4 +90,5 @@ class RecordTemplateBulkEditView(generic.BulkEditView):
90
90
  @register_model_view(RecordTemplate, "bulk_delete", path="delete", detail=False)
91
91
  class RecordTemplateBulkDeleteView(generic.BulkDeleteView):
92
92
  queryset = RecordTemplate.objects.all()
93
+ filterset = RecordTemplateFilterSet
93
94
  table = RecordTemplateTable
@@ -72,6 +72,7 @@ class RegistrarBulkEditView(generic.BulkEditView):
72
72
  @register_model_view(Registrar, "bulk_delete", path="delete", detail=False)
73
73
  class RegistrarBulkDeleteView(generic.BulkDeleteView):
74
74
  queryset = Registrar.objects.all()
75
+ filterset = RegistrarFilterSet
75
76
  table = RegistrarTable
76
77
 
77
78
 
@@ -73,6 +73,7 @@ class RegistrationContactBulkEditView(generic.BulkEditView):
73
73
  @register_model_view(RegistrationContact, "bulk_delete", path="delete", detail=False)
74
74
  class RegistrationContactBulkDeleteView(generic.BulkDeleteView):
75
75
  queryset = RegistrationContact.objects.all()
76
+ filterset = RegistrationContactFilterSet
76
77
  table = RegistrationContactTable
77
78
 
78
79
 
@@ -76,6 +76,7 @@ class ViewBulkEditView(generic.BulkEditView):
76
76
  @register_model_view(View, "bulk_delete", path="delete", detail=False)
77
77
  class ViewBulkDeleteView(generic.BulkDeleteView):
78
78
  queryset = View.objects.all()
79
+ filterset = ViewFilterSet
79
80
  table = ViewTable
80
81
 
81
82
 
@@ -101,6 +101,7 @@ class ZoneBulkEditView(generic.BulkEditView):
101
101
  @register_model_view(Zone, "bulk_delete", path="delete", detail=False)
102
102
  class ZoneBulkDeleteView(generic.BulkDeleteView):
103
103
  queryset = Zone.objects.all()
104
+ filterset = ZoneFilterSet
104
105
  table = ZoneTable
105
106
 
106
107
 
@@ -80,4 +80,5 @@ class ZoneTemplateBulkEditView(generic.BulkEditView):
80
80
  @register_model_view(ZoneTemplate, "bulk_delete", path="delete", detail=False)
81
81
  class ZoneTemplateBulkDeleteView(generic.BulkDeleteView):
82
82
  queryset = ZoneTemplate.objects.all()
83
+ filterset = ZoneTemplateFilterSet
83
84
  table = ZoneTemplateTable
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: netbox-plugin-dns
3
- Version: 1.2.2
3
+ Version: 1.2.3
4
4
  Summary: NetBox DNS is a NetBox plugin for managing DNS data.
5
5
  Author-email: Peter Eckel <pete@netbox-dns.org>
6
6
  Project-URL: Homepage, https://github.com/peteeckel/netbox-plugin-dns
@@ -69,7 +69,7 @@ For integration with a large number of DNS server implementations integration to
69
69
  * NetBox 4.2.0 or higher
70
70
  * Python 3.10 or higher
71
71
 
72
- ## Compatibility with earlier NetBox Versions
72
+ ## Compatibility with NetBox Versions
73
73
 
74
74
  NetBox Version | NetBox DNS Version | Comment
75
75
  -------------- | ------------------ | -------
@@ -78,6 +78,7 @@ NetBox Version | NetBox DNS Version | Comment
78
78
  3.7 | 0.22 |
79
79
  4.0 - 4.1 | 1.0 | Supports legacy IPAM Coupling
80
80
  4.0 - 4.1 | 1.1 | Supports IPAM DNSsync
81
+ 4.2 | 1.2 |
81
82
 
82
83
  ## Installation & Configuration
83
84
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "netbox-plugin-dns"
3
- version = "1.2.2"
3
+ version = "1.2.3"
4
4
  description = "NetBox DNS is a NetBox plugin for managing DNS data."
5
5
  authors = [
6
6
  {name="Peter Eckel", email="pete@netbox-dns.org"},
@@ -1,13 +0,0 @@
1
- from .zone import *
2
- from .nameserver import *
3
- from .record import *
4
- from .view import *
5
- from .registration_contact import *
6
- from .registrar import *
7
- from .zone_template import *
8
- from .record_template import *
9
-
10
- # +
11
- # Backwards compatibility fix, will be removed in version 1.1
12
- # -
13
- from netbox_dns.choices import *
@@ -25,6 +25,12 @@
25
25
  <td style="word-break:break-all;">{{ unicode_name }}</td>
26
26
  </tr>
27
27
  {% endif %}
28
+ {% if object.description %}
29
+ <tr>
30
+ <th scope="row">{% trans "Description" %}</th>
31
+ <td style="word-break:break-all;">{{ object.description }}</td>
32
+ </tr>
33
+ {% endif %}
28
34
  {% if object.tenant %}
29
35
  <tr>
30
36
  <th scope="row">{% trans "Tenant" %}</th>
@@ -64,12 +70,6 @@
64
70
  <th scope="row">{% trans "Status" %}</th>
65
71
  <td>{% badge object.get_status_display bg_color=object.get_status_color %}</td>
66
72
  </tr>
67
- {% if object.description %}
68
- <tr>
69
- <th scope="row">{% trans "Description" %}</th>
70
- <td style="word-break:break-all;">{{ object.description }}</td>
71
- </tr>
72
- {% endif %}
73
73
  </table>
74
74
  </div>
75
75
  {% include 'inc/panels/custom_fields.html' %}