netbox-plugin-dns 1.3.6__tar.gz → 1.4.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 (202) hide show
  1. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/PKG-INFO +1 -1
  2. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/__init__.py +1 -1
  3. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/zone_template.py +1 -0
  4. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/zone_template.py +21 -0
  5. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/dnssec_key_template.py +13 -1
  6. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/zone.py +19 -4
  7. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/zone_template.py +15 -0
  8. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/types.py +1 -0
  9. netbox_plugin_dns-1.4.0/netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
  10. netbox_plugin_dns-1.4.0/netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
  11. netbox_plugin_dns-1.4.0/netbox_dns/migrations/0024_zonetemplate_parental_agents.py +25 -0
  12. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/models/dnssec_key_template.py +3 -0
  13. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/models/zone.py +12 -1
  14. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/models/zone_template.py +11 -0
  15. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zonetemplate.html +10 -0
  16. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/PKG-INFO +1 -1
  17. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/SOURCES.txt +1 -0
  18. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/pyproject.toml +1 -1
  19. netbox_plugin_dns-1.3.6/netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
  20. netbox_plugin_dns-1.3.6/netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
  21. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/LICENSE +0 -0
  22. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/README.md +0 -0
  23. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/field_serializers.py +0 -0
  24. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/nested_serializers.py +0 -0
  25. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers.py +0 -0
  26. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/__init__.py +0 -0
  27. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/dnssec_key_template.py +0 -0
  28. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/dnssec_policy.py +0 -0
  29. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/nameserver.py +0 -0
  30. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/prefix.py +0 -0
  31. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/record.py +0 -0
  32. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/record_template.py +0 -0
  33. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/registrar.py +0 -0
  34. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/registration_contact.py +0 -0
  35. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/view.py +0 -0
  36. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/zone.py +0 -0
  37. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/urls.py +0 -0
  38. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/api/views.py +0 -0
  39. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/apps.py +0 -0
  40. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/__init__.py +0 -0
  41. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/dnssec_key_template.py +0 -0
  42. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/dnssec_policy.py +0 -0
  43. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/record.py +0 -0
  44. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/utilities.py +0 -0
  45. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/zone.py +0 -0
  46. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/__init__.py +0 -0
  47. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/address.py +0 -0
  48. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/choice_array.py +0 -0
  49. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/ipam.py +0 -0
  50. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/network.py +0 -0
  51. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/rfc2317.py +0 -0
  52. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/timeperiod.py +0 -0
  53. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/__init__.py +0 -0
  54. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/dnssec_key_template.py +0 -0
  55. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/dnssec_policy.py +0 -0
  56. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/nameserver.py +0 -0
  57. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/record.py +0 -0
  58. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/record_template.py +0 -0
  59. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/registrar.py +0 -0
  60. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/registration_contact.py +0 -0
  61. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/view.py +0 -0
  62. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/zone.py +0 -0
  63. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/__init__.py +0 -0
  64. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/dnssec_policy.py +0 -0
  65. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/nameserver.py +0 -0
  66. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/record.py +0 -0
  67. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/record_template.py +0 -0
  68. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/registrar.py +0 -0
  69. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/registration_contact.py +0 -0
  70. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/view.py +0 -0
  71. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/__init__.py +0 -0
  72. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/enums.py +0 -0
  73. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filter_lookups.py +0 -0
  74. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/__init__.py +0 -0
  75. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/dnssec_key_template.py +0 -0
  76. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/dnssec_policy.py +0 -0
  77. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/nameserver.py +0 -0
  78. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/record.py +0 -0
  79. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/record_template.py +0 -0
  80. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/registrar.py +0 -0
  81. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/registration_contact.py +0 -0
  82. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/view.py +0 -0
  83. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/zone.py +0 -0
  84. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/zone_template.py +0 -0
  85. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/schema.py +0 -0
  86. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/locale/en/LC_MESSAGES/django.mo +0 -0
  87. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/management/commands/cleanup_database.py +0 -0
  88. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/management/commands/cleanup_rrset_ttl.py +0 -0
  89. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/management/commands/rebuild_dnssync.py +0 -0
  90. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/management/commands/setup_dnssync.py +0 -0
  91. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -0
  92. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +0 -0
  93. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0002_contact_description_registrar_description.py +0 -0
  94. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0003_default_view.py +0 -0
  95. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0004_create_and_assign_default_view.py +0 -0
  96. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0005_alter_zone_view_not_null.py +0 -0
  97. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0006_templating.py +0 -0
  98. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0007_alter_ordering_options.py +0 -0
  99. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0008_view_prefixes.py +0 -0
  100. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0009_rename_contact_registrationcontact.py +0 -0
  101. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0010_view_ip_address_filter.py +0 -0
  102. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0011_rename_related_fields.py +0 -0
  103. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0012_natural_ordering.py +0 -0
  104. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0013_zonetemplate_soa_mname_zonetemplate_soa_rname.py +0 -0
  105. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0014_alter_unique_constraints_lowercase.py +0 -0
  106. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0015_dnssec.py +0 -0
  107. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0016_dnssec_policy_status.py +0 -0
  108. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0017_dnssec_policy_zone_zone_template.py +0 -0
  109. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0018_zone_domain_status_zone_expiration_date.py +0 -0
  110. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0019_dnssecpolicy_parental_agents.py +0 -0
  111. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0020_netbox_3_4.py +0 -0
  112. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0020_remove_dnssecpolicy_parental_agents_and_more.py +0 -0
  113. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0021_alter_record_ptr_record.py +0 -0
  114. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0021_record_ip_address.py +0 -0
  115. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0022_alter_record_ipam_ip_address.py +0 -0
  116. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0022_search.py +0 -0
  117. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0023_alter_record_value.py +0 -0
  118. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0023_disable_ptr_false.py +0 -0
  119. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0024_tenancy.py +0 -0
  120. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0025_ipam_coupling_cf.py +0 -0
  121. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0026_domain_registration.py +0 -0
  122. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0027_alter_registrar_iana_id.py +0 -0
  123. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0028_rfc2317_fields.py +0 -0
  124. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0029_record_fqdn.py +0 -0
  125. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/__init__.py +0 -0
  126. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/mixins/__init__.py +0 -0
  127. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/mixins/object_modification.py +0 -0
  128. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/models/__init__.py +0 -0
  129. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/models/dnssec_policy.py +0 -0
  130. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/models/nameserver.py +0 -0
  131. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/models/record.py +0 -0
  132. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/models/record_template.py +0 -0
  133. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/models/registrar.py +0 -0
  134. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/models/registration_contact.py +0 -0
  135. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/models/view.py +0 -0
  136. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/navigation.py +0 -0
  137. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/signals/__init__.py +0 -0
  138. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/signals/dnssec.py +0 -0
  139. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/signals/ipam_dnssync.py +0 -0
  140. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/__init__.py +0 -0
  141. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/dnssec_key_template.py +0 -0
  142. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/dnssec_policy.py +0 -0
  143. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/ipam_dnssync.py +0 -0
  144. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/nameserver.py +0 -0
  145. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/record.py +0 -0
  146. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/record_template.py +0 -0
  147. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/registrar.py +0 -0
  148. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/registration_contact.py +0 -0
  149. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/view.py +0 -0
  150. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/zone.py +0 -0
  151. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/zone_template.py +0 -0
  152. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/template_content.py +0 -0
  153. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/dnsseckeytemplate.html +0 -0
  154. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/dnssecpolicy.html +0 -0
  155. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/nameserver.html +0 -0
  156. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/record/managed.html +0 -0
  157. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/record/related.html +0 -0
  158. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/record.html +0 -0
  159. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/recordtemplate.html +0 -0
  160. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/registrar.html +0 -0
  161. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/registrationcontact.html +0 -0
  162. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/view/button.html +0 -0
  163. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/view/prefix.html +0 -0
  164. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/view/related.html +0 -0
  165. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/view.html +0 -0
  166. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/base.html +0 -0
  167. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/child.html +0 -0
  168. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/child_zone.html +0 -0
  169. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/delegation_record.html +0 -0
  170. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/managed_record.html +0 -0
  171. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/record.html +0 -0
  172. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/registration.html +0 -0
  173. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +0 -0
  174. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone.html +0 -0
  175. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zonetemplate/child.html +0 -0
  176. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templatetags/__init__.py +0 -0
  177. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/templatetags/netbox_dns.py +0 -0
  178. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/urls.py +0 -0
  179. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/utilities/__init__.py +0 -0
  180. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/utilities/conversions.py +0 -0
  181. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/utilities/dns.py +0 -0
  182. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/utilities/ipam_dnssync.py +0 -0
  183. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/__init__.py +0 -0
  184. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/dns_name.py +0 -0
  185. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/dns_value.py +0 -0
  186. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/dnssec.py +0 -0
  187. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/rfc2317.py +0 -0
  188. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/views/__init__.py +0 -0
  189. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/views/dnssec_key_template.py +0 -0
  190. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/views/dnssec_policy.py +0 -0
  191. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/views/nameserver.py +0 -0
  192. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/views/record.py +0 -0
  193. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/views/record_template.py +0 -0
  194. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/views/registrar.py +0 -0
  195. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/views/registration_contact.py +0 -0
  196. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/views/view.py +0 -0
  197. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/views/zone.py +0 -0
  198. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_dns/views/zone_template.py +0 -0
  199. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/dependency_links.txt +0 -0
  200. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/requires.txt +0 -0
  201. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/top_level.txt +0 -0
  202. {netbox_plugin_dns-1.3.6 → netbox_plugin_dns-1.4.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: netbox-plugin-dns
3
- Version: 1.3.6
3
+ Version: 1.4.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
@@ -4,7 +4,7 @@ from django.core.exceptions import ImproperlyConfigured
4
4
  from netbox.plugins import PluginConfig
5
5
  from netbox.plugins.utils import get_plugin_config
6
6
 
7
- __version__ = "1.3.6"
7
+ __version__ = "1.4.0"
8
8
 
9
9
 
10
10
  def _check_list(setting):
@@ -30,6 +30,7 @@ class ZoneTemplateSerializer(NetBoxModelSerializer):
30
30
  "soa_mname",
31
31
  "soa_rname",
32
32
  "dnssec_policy",
33
+ "parental_agents",
33
34
  "registrar",
34
35
  "registrant",
35
36
  "tech_c",
@@ -1,3 +1,6 @@
1
+ import netaddr
2
+ from netaddr.core import AddrFormatError
3
+
1
4
  import django_filters
2
5
 
3
6
  from django.db.models import Q
@@ -5,6 +8,7 @@ from django.utils.translation import gettext as _
5
8
 
6
9
  from netbox.filtersets import NetBoxModelFilterSet
7
10
  from tenancy.filtersets import TenancyFilterSet
11
+ from utilities.filters import MultiValueCharFilter
8
12
 
9
13
  from netbox_dns.models import (
10
14
  ZoneTemplate,
@@ -76,6 +80,10 @@ class ZoneTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
76
80
  to_field_name="name",
77
81
  label=_("DNSSEC Policy"),
78
82
  )
83
+ parental_agents = MultiValueCharFilter(
84
+ method="filter_parental_agents",
85
+ label=_("Parental Agents"),
86
+ )
79
87
  registrar_id = django_filters.ModelMultipleChoiceFilter(
80
88
  queryset=Registrar.objects.all(),
81
89
  label=_("Registrar ID"),
@@ -127,6 +135,19 @@ class ZoneTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
127
135
  label=_("Billing Contact"),
128
136
  )
129
137
 
138
+ def filter_parental_agents(self, queryset, name, value):
139
+ if not value:
140
+ return queryset
141
+
142
+ query_values = []
143
+ for v in value:
144
+ try:
145
+ query_values.append(str(netaddr.IPAddress(v)))
146
+ except (AddrFormatError, ValueError):
147
+ pass
148
+
149
+ return queryset.filter(parental_agents__overlap=query_values)
150
+
130
151
  def search(self, queryset, name, value):
131
152
  if not value.strip():
132
153
  return queryset
@@ -15,7 +15,8 @@ from utilities.forms.fields import (
15
15
  DynamicModelMultipleChoiceField,
16
16
  )
17
17
  from utilities.forms.rendering import FieldSet
18
- from utilities.forms import add_blank_choice
18
+ from utilities.forms.widgets import HTMXSelect
19
+ from utilities.forms import add_blank_choice, get_field_value
19
20
  from tenancy.models import Tenant, TenantGroup
20
21
  from tenancy.forms import TenancyForm, TenancyFilterForm
21
22
 
@@ -52,6 +53,10 @@ class DNSSECKeyTemplateForm(TenancyForm, NetBoxModelForm):
52
53
  "tags",
53
54
  )
54
55
 
56
+ widgets = {
57
+ "algorithm": HTMXSelect(),
58
+ }
59
+
55
60
  fieldsets = (
56
61
  FieldSet(
57
62
  "name",
@@ -76,6 +81,13 @@ class DNSSECKeyTemplateForm(TenancyForm, NetBoxModelForm):
76
81
  ),
77
82
  )
78
83
 
84
+ def __init__(self, *args, **kwargs):
85
+ super().__init__(*args, **kwargs)
86
+
87
+ algorithm = get_field_value(self, "algorithm")
88
+ if algorithm != DNSSECKeyTemplateAlgorithmChoices.RSASHA256:
89
+ del self.fields["key_size"]
90
+
79
91
  lifetime = TimePeriodField(
80
92
  required=False,
81
93
  )
@@ -21,9 +21,13 @@ from utilities.forms.fields import (
21
21
  CSVModelMultipleChoiceField,
22
22
  DynamicModelChoiceField,
23
23
  )
24
- from utilities.forms.widgets import BulkEditNullBooleanSelect, DatePicker
24
+ from utilities.forms.widgets import BulkEditNullBooleanSelect, DatePicker, HTMXSelect
25
25
  from utilities.forms.rendering import FieldSet
26
- from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, add_blank_choice
26
+ from utilities.forms import (
27
+ BOOLEAN_WITH_BLANK_CHOICES,
28
+ add_blank_choice,
29
+ get_field_value,
30
+ )
27
31
  from tenancy.models import Tenant, TenantGroup
28
32
  from tenancy.forms import TenancyForm, TenancyFilterForm
29
33
 
@@ -79,9 +83,9 @@ class ZoneTemplateUpdateMixin:
79
83
  self.cleaned_data["tags"] = template.tags.all()
80
84
 
81
85
  for field in template.template_fields:
82
- if self.cleaned_data.get(field) in (None, "") and getattr(
86
+ if self.cleaned_data.get(field) in (None, "", []) and getattr(
83
87
  template, field
84
- ) not in (None, ""):
88
+ ) not in (None, "", []):
85
89
  self.cleaned_data[field] = getattr(template, field)
86
90
 
87
91
  self._check_soa_mname()
@@ -207,6 +211,8 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
207
211
  }
208
212
 
209
213
  widgets = {
214
+ "dnssec_policy": HTMXSelect(),
215
+ "registrar": HTMXSelect(),
210
216
  "expiration_date": DatePicker,
211
217
  }
212
218
 
@@ -310,6 +316,15 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
310
316
  name__in=default_nameservers
311
317
  )
312
318
 
319
+ if not get_field_value(self, "dnssec_policy"):
320
+ del self.fields["inline_signing"]
321
+ del self.fields["parental_agents"]
322
+
323
+ if not get_field_value(self, "registrar"):
324
+ del self.fields["registry_domain_id"]
325
+ del self.fields["expiration_date"]
326
+ del self.fields["domain_status"]
327
+
313
328
  view = DynamicModelChoiceField(
314
329
  queryset=View.objects.all(),
315
330
  required=True,
@@ -1,5 +1,6 @@
1
1
  from django import forms
2
2
  from django.utils.translation import gettext_lazy as _
3
+ from django.contrib.postgres.forms import SimpleArrayField
3
4
 
4
5
  from netbox.forms import (
5
6
  NetBoxModelBulkEditForm,
@@ -46,6 +47,7 @@ class ZoneTemplateForm(TenancyForm, NetBoxModelForm):
46
47
  "soa_mname",
47
48
  "soa_rname",
48
49
  "dnssec_policy",
50
+ "parental_agents",
49
51
  "record_templates",
50
52
  "description",
51
53
  "registrar",
@@ -80,6 +82,7 @@ class ZoneTemplateForm(TenancyForm, NetBoxModelForm):
80
82
  ),
81
83
  FieldSet(
82
84
  "dnssec_policy",
85
+ "parental_agents",
83
86
  name=_("DNSSEC"),
84
87
  ),
85
88
  FieldSet(
@@ -145,6 +148,7 @@ class ZoneTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
145
148
  ),
146
149
  FieldSet(
147
150
  "dnssec_policy",
151
+ "parental_agents",
148
152
  name=_("DNSSEC"),
149
153
  ),
150
154
  FieldSet(
@@ -197,6 +201,10 @@ class ZoneTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
197
201
  null_option=_("None"),
198
202
  label=_("DNSSEC Policy ID"),
199
203
  )
204
+ parental_agents = forms.GenericIPAddressField(
205
+ required=False,
206
+ label=_("Parental Agents"),
207
+ )
200
208
  registrar_id = DynamicModelMultipleChoiceField(
201
209
  queryset=Registrar.objects.all(),
202
210
  required=False,
@@ -241,6 +249,7 @@ class ZoneTemplateImportForm(NetBoxModelImportForm):
241
249
  "soa_rname",
242
250
  "record_templates",
243
251
  "dnssec_policy",
252
+ "parental_agents",
244
253
  "description",
245
254
  "registrar",
246
255
  "registrant",
@@ -351,6 +360,7 @@ class ZoneTemplateBulkEditForm(NetBoxModelBulkEditForm):
351
360
  ),
352
361
  FieldSet(
353
362
  "dnssec_policy",
363
+ "parental_agents",
354
364
  name=_("DNSSEC"),
355
365
  ),
356
366
  FieldSet(
@@ -411,6 +421,11 @@ class ZoneTemplateBulkEditForm(NetBoxModelBulkEditForm):
411
421
  required=False,
412
422
  label=_("DNSSEC Policy"),
413
423
  )
424
+ parental_agents = SimpleArrayField(
425
+ required=False,
426
+ base_field=forms.GenericIPAddressField(),
427
+ label=_("Parental Agents"),
428
+ )
414
429
  registrar = DynamicModelChoiceField(
415
430
  queryset=Registrar.objects.all(),
416
431
  required=False,
@@ -290,6 +290,7 @@ class NetBoxDNSZoneTemplateType(NetBoxObjectType):
290
290
  ]
291
291
  | None
292
292
  )
293
+ parental_agents: List[str]
293
294
  record_templates: List[
294
295
  Annotated[
295
296
  "NetBoxDNSRecordTemplateType", strawberry.lazy("netbox_dns.graphql.types")
@@ -0,0 +1,25 @@
1
+ # Generated by Django 5.2.5 on 2025-09-02 15:40
2
+
3
+ import django.contrib.postgres.fields
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("netbox_dns", "0023_disable_ptr_false"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AddField(
15
+ model_name="zonetemplate",
16
+ name="parental_agents",
17
+ field=django.contrib.postgres.fields.ArrayField(
18
+ base_field=models.GenericIPAddressField(),
19
+ blank=True,
20
+ default=list,
21
+ null=True,
22
+ size=None,
23
+ ),
24
+ ),
25
+ ]
@@ -91,6 +91,9 @@ class DNSSECKeyTemplate(ContactsMixin, NetBoxModel):
91
91
  return DNSSECKeyTemplateTypeChoices.colors.get(self.type)
92
92
 
93
93
  def clean(self, *args, **kwargs):
94
+ if self.algorithm != DNSSECKeyTemplateAlgorithmChoices.RSASHA256:
95
+ self.key_size = self._meta.get_field("key_size").get_default()
96
+
94
97
  super().clean(*args, **kwargs)
95
98
 
96
99
  validate_key_template(self)
@@ -650,7 +650,7 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
650
650
  expiration_error = _("The registration for this domain has expired.")
651
651
  elif (self.expiration_date - date.today()).days < expiration_warning_days:
652
652
  expiration_warning = _(
653
- f"The registration for his domain will expire less than {expiration_warning_days} days."
653
+ f"The registration for this domain will expire in less than {expiration_warning_days} days."
654
654
  )
655
655
 
656
656
  return expiration_warning, expiration_error
@@ -800,6 +800,17 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
800
800
  super().clean_fields(exclude=exclude)
801
801
 
802
802
  def clean(self, *args, **kwargs):
803
+ if not self.dnssec_policy:
804
+ self.inline_signing = self._meta.get_field("inline_signing").get_default()
805
+ self.parental_agents = self._meta.get_field("parental_agents").get_default()
806
+
807
+ if not self.registrar:
808
+ self.registry_domain_id = self._meta.get_field(
809
+ "registry_domain_id"
810
+ ).get_default()
811
+ self.expiration_date = self._meta.get_field("expiration_date").get_default()
812
+ self.domain_status = self._meta.get_field("domain_status").get_default()
813
+
803
814
  if self.soa_ttl is None:
804
815
  self.soa_ttl = self.default_ttl
805
816
 
@@ -4,6 +4,7 @@ from dns.exception import DNSException
4
4
  from django.db import models
5
5
  from django.utils.translation import gettext_lazy as _
6
6
  from django.core.exceptions import ValidationError
7
+ from django.contrib.postgres.fields import ArrayField
7
8
 
8
9
  from netbox.models import NetBoxModel
9
10
  from netbox.search import SearchIndex, register_search
@@ -31,6 +32,7 @@ class ZoneTemplate(NetBoxModel):
31
32
  "soa_mname",
32
33
  "soa_rname",
33
34
  "dnssec_policy",
35
+ "parental_agents",
34
36
  "registrar",
35
37
  "registrant",
36
38
  "admin_c",
@@ -43,6 +45,7 @@ class ZoneTemplate(NetBoxModel):
43
45
  "soa_mname",
44
46
  "soa_rname",
45
47
  "dnssec_policy",
48
+ "parental_agents",
46
49
  "registrar",
47
50
  "registrant",
48
51
  "admin_c",
@@ -98,6 +101,14 @@ class ZoneTemplate(NetBoxModel):
98
101
  blank=True,
99
102
  null=True,
100
103
  )
104
+ parental_agents = ArrayField(
105
+ base_field=models.GenericIPAddressField(
106
+ protocol="both",
107
+ ),
108
+ blank=True,
109
+ null=True,
110
+ default=list,
111
+ )
101
112
  registrar = models.ForeignKey(
102
113
  verbose_name=_("Registrar"),
103
114
  to="Registrar",
@@ -61,6 +61,16 @@
61
61
  <th scope="row">{% trans "Policy" %}</th>
62
62
  <td>{{ object.dnssec_policy|linkify }}</td>
63
63
  </tr>
64
+ <tr>
65
+ <th scope="row">{% trans "Parental Agents" %}</th>
66
+ <td>
67
+ <table>
68
+ {% for parental_agent in object.parental_agents %}
69
+ <tr><td>{{ parental_agent }}</td></tr>
70
+ {% endfor %}
71
+ </table>
72
+ </td>
73
+ </tr>
64
74
  </table>
65
75
  </div>
66
76
  {% endif %}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: netbox-plugin-dns
3
- Version: 1.3.6
3
+ Version: 1.4.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
@@ -110,6 +110,7 @@ netbox_dns/migrations/0022_search.py
110
110
  netbox_dns/migrations/0023_alter_record_value.py
111
111
  netbox_dns/migrations/0023_disable_ptr_false.py
112
112
  netbox_dns/migrations/0024_tenancy.py
113
+ netbox_dns/migrations/0024_zonetemplate_parental_agents.py
113
114
  netbox_dns/migrations/0025_ipam_coupling_cf.py
114
115
  netbox_dns/migrations/0026_domain_registration.py
115
116
  netbox_dns/migrations/0027_alter_registrar_iana_id.py
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "netbox-plugin-dns"
3
- version = "1.3.6"
3
+ version = "1.4.0"
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"},