netbox-plugin-dns 1.1.7__tar.gz → 1.2.0__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 (160) hide show
  1. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/PKG-INFO +1 -1
  2. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/__init__.py +9 -4
  3. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/filtersets/zone.py +0 -14
  4. netbox_plugin_dns-1.2.0/netbox_dns/migrations/0012_natural_ordering.py +88 -0
  5. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/models/nameserver.py +1 -0
  6. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/models/record.py +2 -0
  7. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/models/record_template.py +2 -0
  8. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/models/registrar.py +1 -0
  9. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/models/registration_contact.py +2 -0
  10. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/models/view.py +1 -0
  11. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/models/zone.py +1 -0
  12. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/models/zone_template.py +1 -0
  13. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/navigation.py +9 -9
  14. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/signals/ipam_dnssync.py +1 -19
  15. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/template_content.py +4 -4
  16. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/record.html +1 -1
  17. netbox_plugin_dns-1.2.0/netbox_dns/urls.py +72 -0
  18. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/views/nameserver.py +8 -0
  19. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/views/record.py +9 -0
  20. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/views/record_template.py +9 -0
  21. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/views/registrar.py +12 -4
  22. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/views/registration_contact.py +12 -4
  23. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/views/view.py +13 -4
  24. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/views/zone.py +8 -0
  25. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/views/zone_template.py +9 -0
  26. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_plugin_dns.egg-info/PKG-INFO +1 -1
  27. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_plugin_dns.egg-info/SOURCES.txt +2 -9
  28. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/pyproject.toml +1 -1
  29. netbox_plugin_dns-1.1.7/netbox_dns/urls/__init__.py +0 -21
  30. netbox_plugin_dns-1.1.7/netbox_dns/urls/nameserver.py +0 -45
  31. netbox_plugin_dns-1.1.7/netbox_dns/urls/record.py +0 -29
  32. netbox_plugin_dns-1.1.7/netbox_dns/urls/record_template.py +0 -56
  33. netbox_plugin_dns-1.1.7/netbox_dns/urls/registrar.py +0 -39
  34. netbox_plugin_dns-1.1.7/netbox_dns/urls/registration_contact.py +0 -60
  35. netbox_plugin_dns-1.1.7/netbox_dns/urls/view.py +0 -31
  36. netbox_plugin_dns-1.1.7/netbox_dns/urls/zone.py +0 -25
  37. netbox_plugin_dns-1.1.7/netbox_dns/urls/zone_template.py +0 -47
  38. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/LICENSE +0 -0
  39. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/README.md +0 -0
  40. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/nested_serializers.py +0 -0
  41. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/serializers.py +0 -0
  42. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/serializers_/__init__.py +0 -0
  43. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/serializers_/nameserver.py +0 -0
  44. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/serializers_/prefix.py +0 -0
  45. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/serializers_/record.py +0 -0
  46. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/serializers_/record_template.py +0 -0
  47. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/serializers_/registrar.py +0 -0
  48. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/serializers_/registration_contact.py +0 -0
  49. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/serializers_/view.py +0 -0
  50. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/serializers_/zone.py +0 -0
  51. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/serializers_/zone_template.py +0 -0
  52. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/urls.py +0 -0
  53. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/api/views.py +0 -0
  54. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/apps.py +0 -0
  55. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/choices/__init__.py +0 -0
  56. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/choices/record.py +0 -0
  57. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/choices/zone.py +0 -0
  58. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/fields/__init__.py +0 -0
  59. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/fields/address.py +0 -0
  60. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/fields/ipam.py +0 -0
  61. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/fields/network.py +0 -0
  62. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/fields/rfc2317.py +0 -0
  63. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/filtersets/__init__.py +0 -0
  64. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/filtersets/nameserver.py +0 -0
  65. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/filtersets/record.py +0 -0
  66. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/filtersets/record_template.py +0 -0
  67. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/filtersets/registrar.py +0 -0
  68. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/filtersets/registration_contact.py +0 -0
  69. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/filtersets/view.py +0 -0
  70. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/filtersets/zone_template.py +0 -0
  71. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/forms/__init__.py +0 -0
  72. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/forms/nameserver.py +0 -0
  73. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/forms/record.py +0 -0
  74. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/forms/record_template.py +0 -0
  75. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/forms/registrar.py +0 -0
  76. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/forms/registration_contact.py +0 -0
  77. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/forms/view.py +0 -0
  78. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/forms/zone.py +0 -0
  79. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/forms/zone_template.py +0 -0
  80. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/graphql/__init__.py +0 -0
  81. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/graphql/filters.py +0 -0
  82. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/graphql/schema.py +0 -0
  83. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/graphql/types.py +0 -0
  84. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
  85. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/locale/en/LC_MESSAGES/django.mo +0 -0
  86. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/management/commands/cleanup_database.py +0 -0
  87. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/management/commands/cleanup_rrset_ttl.py +0 -0
  88. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/management/commands/rebuild_dnssync.py +0 -0
  89. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/management/commands/setup_dnssync.py +0 -0
  90. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/management/commands/update_soa.py +0 -0
  91. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -0
  92. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +0 -0
  93. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0002_contact_description_registrar_description.py +0 -0
  94. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0003_default_view.py +0 -0
  95. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0004_create_and_assign_default_view.py +0 -0
  96. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0005_alter_zone_view_not_null.py +0 -0
  97. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0006_templating.py +0 -0
  98. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0007_alter_ordering_options.py +0 -0
  99. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0008_view_prefixes.py +0 -0
  100. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0009_rename_contact_registrationcontact.py +0 -0
  101. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0010_view_ip_address_filter.py +0 -0
  102. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0011_rename_related_fields.py +0 -0
  103. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0020_netbox_3_4.py +0 -0
  104. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0021_record_ip_address.py +0 -0
  105. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0022_search.py +0 -0
  106. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0023_alter_record_value.py +0 -0
  107. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0024_tenancy.py +0 -0
  108. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0025_ipam_coupling_cf.py +0 -0
  109. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0026_domain_registration.py +0 -0
  110. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0027_alter_registrar_iana_id.py +0 -0
  111. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0028_rfc2317_fields.py +0 -0
  112. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/0029_record_fqdn.py +0 -0
  113. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/migrations/__init__.py +0 -0
  114. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/mixins/__init__.py +0 -0
  115. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/mixins/object_modification.py +0 -0
  116. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/models/__init__.py +0 -0
  117. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/signals/__init__.py +0 -0
  118. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/tables/__init__.py +0 -0
  119. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/tables/ipam_dnssync.py +0 -0
  120. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/tables/nameserver.py +0 -0
  121. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/tables/record.py +0 -0
  122. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/tables/record_template.py +0 -0
  123. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/tables/registrar.py +0 -0
  124. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/tables/registration_contact.py +0 -0
  125. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/tables/view.py +0 -0
  126. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/tables/zone.py +0 -0
  127. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/tables/zone_template.py +0 -0
  128. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/nameserver.html +0 -0
  129. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/record/managed.html +0 -0
  130. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/record/related.html +0 -0
  131. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/recordtemplate.html +0 -0
  132. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/registrar.html +0 -0
  133. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/registrationcontact.html +0 -0
  134. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/view/button.html +0 -0
  135. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/view/prefix.html +0 -0
  136. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/view/related.html +0 -0
  137. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/view.html +0 -0
  138. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/zone/base.html +0 -0
  139. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/zone/child.html +0 -0
  140. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/zone/child_zone.html +0 -0
  141. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/zone/delegation_record.html +0 -0
  142. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/zone/managed_record.html +0 -0
  143. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/zone/record.html +0 -0
  144. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/zone/registration.html +0 -0
  145. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +0 -0
  146. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/zone.html +0 -0
  147. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/templates/netbox_dns/zonetemplate.html +0 -0
  148. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/utilities/__init__.py +0 -0
  149. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/utilities/conversions.py +0 -0
  150. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/utilities/dns.py +0 -0
  151. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/utilities/ipam_dnssync.py +0 -0
  152. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/validators/__init__.py +0 -0
  153. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/validators/dns_name.py +0 -0
  154. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/validators/dns_value.py +0 -0
  155. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/validators/rfc2317.py +0 -0
  156. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_dns/views/__init__.py +0 -0
  157. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_plugin_dns.egg-info/dependency_links.txt +0 -0
  158. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_plugin_dns.egg-info/requires.txt +0 -0
  159. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/netbox_plugin_dns.egg-info/top_level.txt +0 -0
  160. {netbox_plugin_dns-1.1.7 → netbox_plugin_dns-1.2.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: netbox-plugin-dns
3
- Version: 1.1.7
3
+ Version: 1.2.0
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
@@ -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.1.7"
10
+ __version__ = "1.2.0"
11
11
 
12
12
 
13
13
  def _check_list(setting):
@@ -19,8 +19,7 @@ class DNSConfig(PluginConfig):
19
19
  name = "netbox_dns"
20
20
  verbose_name = _("NetBox DNS")
21
21
  description = _("NetBox plugin for DNS data")
22
- min_version = "4.0.0"
23
- max_version = "4.1.99"
22
+ min_version = "4.2.0"
24
23
  version = __version__
25
24
  author = "Peter Eckel"
26
25
  author_email = "pete@netbox-dns.org"
@@ -50,7 +49,6 @@ class DNSConfig(PluginConfig):
50
49
  "dnssync_minimum_zone_labels": 2,
51
50
  "tolerate_characters_in_zone_labels": "",
52
51
  "tolerate_underscores_in_labels": False,
53
- "tolerate_underscores_in_hostnames": False, # Deprecated, will be removed in 1.2.0
54
52
  "tolerate_leading_underscore_types": [
55
53
  RecordTypeChoices.CNAME,
56
54
  RecordTypeChoices.DNAME,
@@ -82,6 +80,13 @@ class DNSConfig(PluginConfig):
82
80
  ):
83
81
  _check_list(setting)
84
82
 
83
+ # +
84
+ # TODO: Remove this workaround as soon as it's no longer required
85
+ #
86
+ # Force loading views so the register_model_view is run for all views
87
+ # -
88
+ import netbox_dns.views # noqa: F401
89
+
85
90
 
86
91
  #
87
92
  # Initialize plugin config
@@ -29,20 +29,6 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
29
29
  to_field_name="name",
30
30
  label=_("View"),
31
31
  )
32
- # DEPRECATED: Remove in 1.1
33
- name_server_id = django_filters.ModelMultipleChoiceFilter(
34
- queryset=NameServer.objects.all(),
35
- field_name="nameservers",
36
- to_field_name="id",
37
- label=_("Nameserver IDs"),
38
- )
39
- # DEPRECATED: Remove in 1.1
40
- name_server = django_filters.ModelMultipleChoiceFilter(
41
- queryset=NameServer.objects.all(),
42
- field_name="nameservers__name",
43
- to_field_name="name",
44
- label=_("Nameservers"),
45
- )
46
32
  nameserver_id = django_filters.ModelMultipleChoiceFilter(
47
33
  queryset=NameServer.objects.all(),
48
34
  field_name="nameservers",
@@ -0,0 +1,88 @@
1
+ # Generated by Django 5.1.3 on 2024-12-02 16:26
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ("netbox_dns", "0011_rename_related_fields"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name="nameserver",
15
+ name="name",
16
+ field=models.CharField(
17
+ db_collation="natural_sort", max_length=255, unique=True
18
+ ),
19
+ ),
20
+ migrations.AlterField(
21
+ model_name="record",
22
+ name="fqdn",
23
+ field=models.CharField(
24
+ blank=True,
25
+ db_collation="natural_sort",
26
+ default=None,
27
+ max_length=255,
28
+ null=True,
29
+ ),
30
+ ),
31
+ migrations.AlterField(
32
+ model_name="record",
33
+ name="name",
34
+ field=models.CharField(db_collation="natural_sort", max_length=255),
35
+ ),
36
+ migrations.AlterField(
37
+ model_name="recordtemplate",
38
+ name="name",
39
+ field=models.CharField(
40
+ db_collation="natural_sort", max_length=200, unique=True
41
+ ),
42
+ ),
43
+ migrations.AlterField(
44
+ model_name="recordtemplate",
45
+ name="record_name",
46
+ field=models.CharField(db_collation="natural_sort", max_length=255),
47
+ ),
48
+ migrations.AlterField(
49
+ model_name="registrar",
50
+ name="name",
51
+ field=models.CharField(
52
+ db_collation="natural_sort", max_length=255, unique=True
53
+ ),
54
+ ),
55
+ migrations.AlterField(
56
+ model_name="registrationcontact",
57
+ name="contact_id",
58
+ field=models.CharField(
59
+ db_collation="natural_sort", max_length=50, unique=True
60
+ ),
61
+ ),
62
+ migrations.AlterField(
63
+ model_name="registrationcontact",
64
+ name="name",
65
+ field=models.CharField(
66
+ blank=True, db_collation="natural_sort", max_length=100
67
+ ),
68
+ ),
69
+ migrations.AlterField(
70
+ model_name="view",
71
+ name="name",
72
+ field=models.CharField(
73
+ db_collation="natural_sort", max_length=255, unique=True
74
+ ),
75
+ ),
76
+ migrations.AlterField(
77
+ model_name="zone",
78
+ name="name",
79
+ field=models.CharField(db_collation="natural_sort", max_length=255),
80
+ ),
81
+ migrations.AlterField(
82
+ model_name="zonetemplate",
83
+ name="name",
84
+ field=models.CharField(
85
+ db_collation="natural_sort", max_length=200, unique=True
86
+ ),
87
+ ),
88
+ ]
@@ -31,6 +31,7 @@ class NameServer(ObjectModificationMixin, ContactsMixin, NetBoxModel):
31
31
  verbose_name=_("Name"),
32
32
  unique=True,
33
33
  max_length=255,
34
+ db_collation="natural_sort",
34
35
  )
35
36
  description = models.CharField(
36
37
  verbose_name=_("Description"),
@@ -119,6 +119,7 @@ class Record(ObjectModificationMixin, ContactsMixin, NetBoxModel):
119
119
  name = models.CharField(
120
120
  verbose_name=_("Name"),
121
121
  max_length=255,
122
+ db_collation="natural_sort",
122
123
  )
123
124
  zone = models.ForeignKey(
124
125
  verbose_name=_("Zone"),
@@ -132,6 +133,7 @@ class Record(ObjectModificationMixin, ContactsMixin, NetBoxModel):
132
133
  null=True,
133
134
  blank=True,
134
135
  default=None,
136
+ db_collation="natural_sort",
135
137
  )
136
138
  type = models.CharField(
137
139
  verbose_name=_("Type"),
@@ -27,10 +27,12 @@ class RecordTemplate(NetBoxModel):
27
27
  verbose_name=_("Template Name"),
28
28
  unique=True,
29
29
  max_length=200,
30
+ db_collation="natural_sort",
30
31
  )
31
32
  record_name = models.CharField(
32
33
  verbose_name=_("Name"),
33
34
  max_length=255,
35
+ db_collation="natural_sort",
34
36
  )
35
37
  description = models.CharField(
36
38
  verbose_name=_("Description"),
@@ -20,6 +20,7 @@ class Registrar(NetBoxModel):
20
20
  verbose_name=_("Name"),
21
21
  unique=True,
22
22
  max_length=255,
23
+ db_collation="natural_sort",
23
24
  )
24
25
  description = models.CharField(
25
26
  verbose_name=_("Description"),
@@ -22,11 +22,13 @@ class RegistrationContact(NetBoxModel):
22
22
  verbose_name=_("Contact ID"),
23
23
  max_length=50,
24
24
  unique=True,
25
+ db_collation="natural_sort",
25
26
  )
26
27
  name = models.CharField(
27
28
  verbose_name=_("Name"),
28
29
  blank=True,
29
30
  max_length=100,
31
+ db_collation="natural_sort",
30
32
  )
31
33
  description = models.CharField(
32
34
  verbose_name=_("Description"),
@@ -30,6 +30,7 @@ class View(ObjectModificationMixin, ContactsMixin, NetBoxModel):
30
30
  verbose_name=_("Name"),
31
31
  unique=True,
32
32
  max_length=255,
33
+ db_collation="natural_sort",
33
34
  )
34
35
  description = models.CharField(
35
36
  verbose_name=_("Description"),
@@ -94,6 +94,7 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
94
94
  name = models.CharField(
95
95
  verbose_name=_("Name"),
96
96
  max_length=255,
97
+ db_collation="natural_sort",
97
98
  )
98
99
  status = models.CharField(
99
100
  verbose_name=_("Status"),
@@ -17,6 +17,7 @@ class ZoneTemplate(NetBoxModel):
17
17
  verbose_name=_("Template Name"),
18
18
  unique=True,
19
19
  max_length=200,
20
+ db_collation="natural_sort",
20
21
  )
21
22
  description = models.CharField(
22
23
  verbose_name=_("Description"),
@@ -18,7 +18,7 @@ view_menu_item = PluginMenuItem(
18
18
  permissions=["netbox_dns.add_view"],
19
19
  ),
20
20
  PluginMenuButton(
21
- "plugins:netbox_dns:view_import",
21
+ "plugins:netbox_dns:view_bulk_import",
22
22
  _("Import"),
23
23
  "mdi mdi-upload",
24
24
  permissions=["netbox_dns.add_view"],
@@ -38,7 +38,7 @@ zone_menu_item = PluginMenuItem(
38
38
  permissions=["netbox_dns.add_zone"],
39
39
  ),
40
40
  PluginMenuButton(
41
- "plugins:netbox_dns:zone_import",
41
+ "plugins:netbox_dns:zone_bulk_import",
42
42
  _("Import"),
43
43
  "mdi mdi-upload",
44
44
  permissions=["netbox_dns.add_zone"],
@@ -58,7 +58,7 @@ nameserver_menu_item = PluginMenuItem(
58
58
  permissions=["netbox_dns.add_nameserver"],
59
59
  ),
60
60
  PluginMenuButton(
61
- "plugins:netbox_dns:nameserver_import",
61
+ "plugins:netbox_dns:nameserver_bulk_import",
62
62
  _("Import"),
63
63
  "mdi mdi-upload",
64
64
  permissions=["netbox_dns.add_nameserver"],
@@ -78,7 +78,7 @@ record_menu_item = PluginMenuItem(
78
78
  permissions=["netbox_dns.add_record"],
79
79
  ),
80
80
  PluginMenuButton(
81
- "plugins:netbox_dns:record_import",
81
+ "plugins:netbox_dns:record_bulk_import",
82
82
  _("Import"),
83
83
  "mdi mdi-upload",
84
84
  permissions=["netbox_dns.add_record"],
@@ -87,7 +87,7 @@ record_menu_item = PluginMenuItem(
87
87
  )
88
88
 
89
89
  managed_record_menu_item = PluginMenuItem(
90
- link="plugins:netbox_dns:managed_record_list",
90
+ link="plugins:netbox_dns:record_list_managed",
91
91
  link_text=_("Managed Records"),
92
92
  permissions=["netbox_dns.view_record"],
93
93
  )
@@ -104,7 +104,7 @@ zonetemplate_menu_item = PluginMenuItem(
104
104
  permissions=["netbox_dns.add_zonetemplate"],
105
105
  ),
106
106
  PluginMenuButton(
107
- "plugins:netbox_dns:zonetemplate_import",
107
+ "plugins:netbox_dns:zonetemplate_bulk_import",
108
108
  _("Import"),
109
109
  "mdi mdi-upload",
110
110
  permissions=["netbox_dns.add_zonetemplate"],
@@ -124,7 +124,7 @@ recordtemplate_menu_item = PluginMenuItem(
124
124
  permissions=["netbox_dns.add_recordtemplate"],
125
125
  ),
126
126
  PluginMenuButton(
127
- "plugins:netbox_dns:recordtemplate_import",
127
+ "plugins:netbox_dns:recordtemplate_bulk_import",
128
128
  _("Import"),
129
129
  "mdi mdi-upload",
130
130
  permissions=["netbox_dns.add_recordtemplate"],
@@ -144,7 +144,7 @@ registrar_menu_item = PluginMenuItem(
144
144
  permissions=["netbox_dns.add_registrar"],
145
145
  ),
146
146
  PluginMenuButton(
147
- "plugins:netbox_dns:registrar_import",
147
+ "plugins:netbox_dns:registrar_bulk_import",
148
148
  _("Import"),
149
149
  "mdi mdi-upload",
150
150
  permissions=["netbox_dns.add_registrar"],
@@ -164,7 +164,7 @@ contact_menu_item = PluginMenuItem(
164
164
  permissions=["netbox_dns.add_registrationcontact"],
165
165
  ),
166
166
  PluginMenuButton(
167
- "plugins:netbox_dns:registrationcontact_import",
167
+ "plugins:netbox_dns:registrationcontact_bulk_import",
168
168
  _("Import"),
169
169
  "mdi mdi-upload",
170
170
  permissions=["netbox_dns.add_registrationcontact"],
@@ -11,7 +11,6 @@ from netbox.signals import post_clean
11
11
  from ipam.models import IPAddress, Prefix
12
12
  from utilities.exceptions import AbortRequest
13
13
 
14
- from netbox_dns.models import view as _view
15
14
  from netbox_dns.utilities import (
16
15
  check_dns_records,
17
16
  check_record_permission,
@@ -203,26 +202,9 @@ def ipam_dnssync_prefix_pre_delete(instance, **kwargs):
203
202
  update_dns_records(ip_address)
204
203
 
205
204
 
206
- @receiver(m2m_changed, sender=_view.View.prefixes.through)
205
+ @receiver(m2m_changed, sender=Prefix.netbox_dns_views.through)
207
206
  def ipam_dnssync_view_prefix_changed(**kwargs):
208
207
  action = kwargs.get("action")
209
- request = current_request.get()
210
-
211
- # +
212
- # Handle all post_add and post_remove signals except the ones directly
213
- # handled by the pre_delete handler for the Prefix model.
214
- #
215
- # Yes. This IS ugly.
216
- # -
217
- if action not in ("post_add", "post_remove") or (
218
- request is not None
219
- and action == "post_remove"
220
- and (
221
- request.path.startswith("/ipam/prefixes/")
222
- or request.path.startswith("/api/ipam/prefixes/")
223
- )
224
- ):
225
- return
226
208
 
227
209
  check_view = action != "post_remove"
228
210
 
@@ -15,7 +15,7 @@ from netbox_dns.utilities import get_views_by_prefix
15
15
 
16
16
 
17
17
  class RelatedDNSRecords(PluginTemplateExtension):
18
- model = "ipam.ipaddress"
18
+ models = ("ipam.ipaddress",)
19
19
 
20
20
  def right_page(self):
21
21
  ip_address = self.context.get("object")
@@ -51,7 +51,7 @@ class RelatedDNSRecords(PluginTemplateExtension):
51
51
 
52
52
 
53
53
  class RelatedDNSViews(PluginTemplateExtension):
54
- model = "ipam.prefix"
54
+ models = ("ipam.prefix",)
55
55
 
56
56
  def right_page(self):
57
57
  prefix = self.context.get("object")
@@ -73,7 +73,7 @@ class RelatedDNSViews(PluginTemplateExtension):
73
73
  "netbox_dns/view/button.html",
74
74
  extra_context={
75
75
  "url": reverse(
76
- "plugins:netbox_dns:prefix_views",
76
+ "ipam:prefix_views",
77
77
  kwargs={"pk": self.context.get("object").pk},
78
78
  ),
79
79
  },
@@ -81,7 +81,7 @@ class RelatedDNSViews(PluginTemplateExtension):
81
81
 
82
82
 
83
83
  class IPRelatedDNSRecords(PluginTemplateExtension):
84
- model = "ipam.ipaddress"
84
+ models = ("ipam.ipaddress",)
85
85
 
86
86
  def right_page(self):
87
87
  ip_address = self.context.get("object")
@@ -15,7 +15,7 @@
15
15
  {% block breadcrumbs %}
16
16
  {% if object.managed %}
17
17
  <li class="breadcrumb-item">
18
- <a href="{% url 'plugins:netbox_dns:managed_record_list' %}">{% trans "Managed Records" %}</a>
18
+ <a href="{% url 'plugins:netbox_dns:record_list_managed' %}">{% trans "Managed Records" %}</a>
19
19
  </li>
20
20
  {% else %}
21
21
  {{ block.super }}
@@ -0,0 +1,72 @@
1
+ from django.urls import include, path
2
+
3
+ from utilities.urls import get_model_urls
4
+
5
+ app_name = "netbox_dns"
6
+
7
+ urlpatterns = (
8
+ path(
9
+ "nameservers/",
10
+ include(get_model_urls("netbox_dns", "nameserver", detail=False)),
11
+ ),
12
+ path(
13
+ "nameservers/<int:pk>/",
14
+ include(get_model_urls("netbox_dns", "nameserver")),
15
+ ),
16
+ path(
17
+ "recordtemplates/",
18
+ include(get_model_urls("netbox_dns", "recordtemplate", detail=False)),
19
+ ),
20
+ path(
21
+ "recordtemplates/<int:pk>/",
22
+ include(get_model_urls("netbox_dns", "recordtemplate")),
23
+ ),
24
+ path(
25
+ "records/",
26
+ include(get_model_urls("netbox_dns", "record", detail=False)),
27
+ ),
28
+ path(
29
+ "records/<int:pk>/",
30
+ include(get_model_urls("netbox_dns", "record")),
31
+ ),
32
+ path(
33
+ "registrars",
34
+ include(get_model_urls("netbox_dns", "registrar", detail=False)),
35
+ ),
36
+ path(
37
+ "registrars/<int:pk>/",
38
+ include(get_model_urls("netbox_dns", "registrar")),
39
+ ),
40
+ path(
41
+ "registrationcontacts/",
42
+ include(get_model_urls("netbox_dns", "registrationcontact", detail=False)),
43
+ ),
44
+ path(
45
+ "registrationcontacts/<int:pk>/",
46
+ include(get_model_urls("netbox_dns", "registrationcontact")),
47
+ ),
48
+ path(
49
+ "views/",
50
+ include(get_model_urls("netbox_dns", "view", detail=False)),
51
+ ),
52
+ path(
53
+ "views/<int:pk>/",
54
+ include(get_model_urls("netbox_dns", "view")),
55
+ ),
56
+ path(
57
+ "zonetemplates/",
58
+ include(get_model_urls("netbox_dns", "zonetemplate", detail=False)),
59
+ ),
60
+ path(
61
+ "zonetemplates/<int:pk>/",
62
+ include(get_model_urls("netbox_dns", "zonetemplate")),
63
+ ),
64
+ path(
65
+ "zones/",
66
+ include(get_model_urls("netbox_dns", "zone", detail=False)),
67
+ ),
68
+ path(
69
+ "zones/<int:pk>/",
70
+ include(get_model_urls("netbox_dns", "zone")),
71
+ ),
72
+ )
@@ -28,6 +28,7 @@ __all__ = (
28
28
  )
29
29
 
30
30
 
31
+ @register_model_view(NameServer, "list", path="", detail=False)
31
32
  class NameServerListView(generic.ObjectListView):
32
33
  queryset = NameServer.objects.all()
33
34
  filterset = NameServerFilterSet
@@ -35,6 +36,7 @@ class NameServerListView(generic.ObjectListView):
35
36
  table = NameServerTable
36
37
 
37
38
 
39
+ @register_model_view(NameServer)
38
40
  class NameServerView(generic.ObjectView):
39
41
  queryset = NameServer.objects.prefetch_related("zones")
40
42
 
@@ -48,17 +50,21 @@ class NameServerView(generic.ObjectView):
48
50
  return {}
49
51
 
50
52
 
53
+ @register_model_view(NameServer, "add", detail=False)
54
+ @register_model_view(NameServer, "edit")
51
55
  class NameServerEditView(generic.ObjectEditView):
52
56
  queryset = NameServer.objects.all()
53
57
  form = NameServerForm
54
58
  default_return_url = "plugins:netbox_dns:nameserver_list"
55
59
 
56
60
 
61
+ @register_model_view(NameServer, "delete")
57
62
  class NameServerDeleteView(generic.ObjectDeleteView):
58
63
  queryset = NameServer.objects.all()
59
64
  default_return_url = "plugins:netbox_dns:nameserver_list"
60
65
 
61
66
 
67
+ @register_model_view(NameServer, "bulk_import", detail=False)
62
68
  class NameServerBulkImportView(generic.BulkImportView):
63
69
  queryset = NameServer.objects.all()
64
70
  model_form = NameServerImportForm
@@ -66,6 +72,7 @@ class NameServerBulkImportView(generic.BulkImportView):
66
72
  default_return_url = "plugins:netbox_dns:nameserver_list"
67
73
 
68
74
 
75
+ @register_model_view(NameServer, "bulk_edit", path="edit", detail=False)
69
76
  class NameServerBulkEditView(generic.BulkEditView):
70
77
  queryset = NameServer.objects.all()
71
78
  filterset = NameServerFilterSet
@@ -73,6 +80,7 @@ class NameServerBulkEditView(generic.BulkEditView):
73
80
  form = NameServerBulkEditForm
74
81
 
75
82
 
83
+ @register_model_view(NameServer, "bulk_delete", path="delete", detail=False)
76
84
  class NameServerBulkDeleteView(generic.BulkDeleteView):
77
85
  queryset = NameServer.objects.all()
78
86
  table = NameServerTable
@@ -35,6 +35,7 @@ class CNAMEWarning(Exception):
35
35
  pass
36
36
 
37
37
 
38
+ @register_model_view(Record, "list", path="", detail=False)
38
39
  class RecordListView(generic.ObjectListView):
39
40
  queryset = Record.objects.filter(managed=False).prefetch_related(
40
41
  "zone", "ptr_record"
@@ -44,6 +45,7 @@ class RecordListView(generic.ObjectListView):
44
45
  table = RecordTable
45
46
 
46
47
 
48
+ @register_model_view(Record, "list_managed", path="managed", detail=False)
47
49
  class ManagedRecordListView(generic.ObjectListView):
48
50
  queryset = Record.objects.filter(managed=True).prefetch_related(
49
51
  "ipam_ip_address", "address_record"
@@ -55,6 +57,7 @@ class ManagedRecordListView(generic.ObjectListView):
55
57
  template_name = "netbox_dns/record/managed.html"
56
58
 
57
59
 
60
+ @register_model_view(Record)
58
61
  class RecordView(generic.ObjectView):
59
62
  queryset = Record.objects.prefetch_related("zone", "ptr_record")
60
63
 
@@ -158,6 +161,8 @@ class RecordView(generic.ObjectView):
158
161
  return context
159
162
 
160
163
 
164
+ @register_model_view(Record, "add", detail=False)
165
+ @register_model_view(Record, "edit")
161
166
  class RecordEditView(generic.ObjectEditView):
162
167
  queryset = Record.objects.filter(managed=False).prefetch_related(
163
168
  "zone", "ptr_record"
@@ -166,11 +171,13 @@ class RecordEditView(generic.ObjectEditView):
166
171
  default_return_url = "plugins:netbox_dns:record_list"
167
172
 
168
173
 
174
+ @register_model_view(Record, "delete")
169
175
  class RecordDeleteView(generic.ObjectDeleteView):
170
176
  queryset = Record.objects.filter(managed=False)
171
177
  default_return_url = "plugins:netbox_dns:record_list"
172
178
 
173
179
 
180
+ @register_model_view(Record, "bulk_import", detail=False)
174
181
  class RecordBulkImportView(generic.BulkImportView):
175
182
  queryset = Record.objects.filter(managed=False).prefetch_related(
176
183
  "zone", "ptr_record"
@@ -180,6 +187,7 @@ class RecordBulkImportView(generic.BulkImportView):
180
187
  default_return_url = "plugins:netbox_dns:record_list"
181
188
 
182
189
 
190
+ @register_model_view(Record, "bulk_edit", path="edit", detail=False)
183
191
  class RecordBulkEditView(generic.BulkEditView):
184
192
  queryset = Record.objects.filter(managed=False).prefetch_related("zone")
185
193
  filterset = RecordFilterSet
@@ -187,6 +195,7 @@ class RecordBulkEditView(generic.BulkEditView):
187
195
  form = RecordBulkEditForm
188
196
 
189
197
 
198
+ @register_model_view(Record, "bulk_delete", path="delete", detail=False)
190
199
  class RecordBulkDeleteView(generic.BulkDeleteView):
191
200
  queryset = Record.objects.filter(managed=False)
192
201
  table = RecordTable
@@ -1,6 +1,7 @@
1
1
  from dns import name as dns_name
2
2
 
3
3
  from netbox.views import generic
4
+ from utilities.views import register_model_view
4
5
 
5
6
  from netbox_dns.filtersets import RecordTemplateFilterSet
6
7
  from netbox_dns.forms import (
@@ -25,6 +26,7 @@ __all__ = (
25
26
  )
26
27
 
27
28
 
29
+ @register_model_view(RecordTemplate, "list", path="", detail=False)
28
30
  class RecordTemplateListView(generic.ObjectListView):
29
31
  queryset = RecordTemplate.objects.all()
30
32
  filterset = RecordTemplateFilterSet
@@ -32,6 +34,7 @@ class RecordTemplateListView(generic.ObjectListView):
32
34
  table = RecordTemplateTable
33
35
 
34
36
 
37
+ @register_model_view(RecordTemplate)
35
38
  class RecordTemplateView(generic.ObjectView):
36
39
  queryset = RecordTemplate.objects.all()
37
40
 
@@ -54,17 +57,21 @@ class RecordTemplateView(generic.ObjectView):
54
57
  return context
55
58
 
56
59
 
60
+ @register_model_view(RecordTemplate, "add", detail=False)
61
+ @register_model_view(RecordTemplate, "edit")
57
62
  class RecordTemplateEditView(generic.ObjectEditView):
58
63
  queryset = RecordTemplate.objects.all()
59
64
  form = RecordTemplateForm
60
65
  default_return_url = "plugins:netbox_dns:recordtemplate_list"
61
66
 
62
67
 
68
+ @register_model_view(RecordTemplate, "delete")
63
69
  class RecordTemplateDeleteView(generic.ObjectDeleteView):
64
70
  queryset = RecordTemplate.objects.all()
65
71
  default_return_url = "plugins:netbox_dns:recordtemplate_list"
66
72
 
67
73
 
74
+ @register_model_view(RecordTemplate, "bulk_import", detail=False)
68
75
  class RecordTemplateBulkImportView(generic.BulkImportView):
69
76
  queryset = RecordTemplate.objects.all()
70
77
  model_form = RecordTemplateImportForm
@@ -72,6 +79,7 @@ class RecordTemplateBulkImportView(generic.BulkImportView):
72
79
  default_return_url = "plugins:netbox_dns:recordtemplate_list"
73
80
 
74
81
 
82
+ @register_model_view(RecordTemplate, "bulk_edit", path="edit", detail=False)
75
83
  class RecordTemplateBulkEditView(generic.BulkEditView):
76
84
  queryset = RecordTemplate.objects.all()
77
85
  filterset = RecordTemplateFilterSet
@@ -79,6 +87,7 @@ class RecordTemplateBulkEditView(generic.BulkEditView):
79
87
  form = RecordTemplateBulkEditForm
80
88
 
81
89
 
90
+ @register_model_view(RecordTemplate, "bulk_delete", path="delete", detail=False)
82
91
  class RecordTemplateBulkDeleteView(generic.BulkDeleteView):
83
92
  queryset = RecordTemplate.objects.all()
84
93
  table = RecordTemplateTable