netbox-plugin-dns 1.3.5__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.5 → netbox_plugin_dns-1.4.0}/PKG-INFO +1 -1
  2. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/__init__.py +2 -2
  3. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/zone_template.py +1 -0
  4. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/zone_template.py +21 -0
  5. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/dnssec_key_template.py +13 -1
  6. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/zone.py +19 -4
  7. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/zone_template.py +15 -0
  8. {netbox_plugin_dns-1.3.5 → 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.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/management/commands/cleanup_database.py +2 -2
  12. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/management/commands/rebuild_dnssync.py +1 -11
  13. netbox_plugin_dns-1.4.0/netbox_dns/migrations/0023_disable_ptr_false.py +27 -0
  14. netbox_plugin_dns-1.4.0/netbox_dns/migrations/0024_zonetemplate_parental_agents.py +25 -0
  15. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/dnssec_key_template.py +3 -0
  16. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/zone.py +12 -1
  17. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/zone_template.py +11 -0
  18. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zonetemplate.html +10 -0
  19. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/utilities/ipam_dnssync.py +8 -9
  20. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/record.py +5 -1
  21. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/PKG-INFO +1 -1
  22. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/SOURCES.txt +2 -0
  23. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/pyproject.toml +1 -1
  24. netbox_plugin_dns-1.3.5/netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
  25. netbox_plugin_dns-1.3.5/netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
  26. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/LICENSE +0 -0
  27. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/README.md +0 -0
  28. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/field_serializers.py +0 -0
  29. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/nested_serializers.py +0 -0
  30. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers.py +0 -0
  31. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/__init__.py +0 -0
  32. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/dnssec_key_template.py +0 -0
  33. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/dnssec_policy.py +0 -0
  34. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/nameserver.py +0 -0
  35. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/prefix.py +0 -0
  36. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/record.py +0 -0
  37. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/record_template.py +0 -0
  38. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/registrar.py +0 -0
  39. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/registration_contact.py +0 -0
  40. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/view.py +0 -0
  41. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/zone.py +0 -0
  42. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/urls.py +0 -0
  43. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/views.py +0 -0
  44. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/apps.py +0 -0
  45. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/__init__.py +0 -0
  46. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/dnssec_key_template.py +0 -0
  47. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/dnssec_policy.py +0 -0
  48. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/record.py +0 -0
  49. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/utilities.py +0 -0
  50. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/zone.py +0 -0
  51. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/__init__.py +0 -0
  52. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/address.py +0 -0
  53. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/choice_array.py +0 -0
  54. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/ipam.py +0 -0
  55. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/network.py +0 -0
  56. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/rfc2317.py +0 -0
  57. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/timeperiod.py +0 -0
  58. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/__init__.py +0 -0
  59. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/dnssec_key_template.py +0 -0
  60. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/dnssec_policy.py +0 -0
  61. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/nameserver.py +0 -0
  62. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/record.py +0 -0
  63. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/record_template.py +0 -0
  64. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/registrar.py +0 -0
  65. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/registration_contact.py +0 -0
  66. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/view.py +0 -0
  67. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/zone.py +0 -0
  68. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/__init__.py +0 -0
  69. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/dnssec_policy.py +0 -0
  70. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/nameserver.py +0 -0
  71. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/record.py +0 -0
  72. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/record_template.py +0 -0
  73. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/registrar.py +0 -0
  74. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/registration_contact.py +0 -0
  75. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/view.py +0 -0
  76. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/__init__.py +0 -0
  77. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/enums.py +0 -0
  78. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filter_lookups.py +0 -0
  79. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/__init__.py +0 -0
  80. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/dnssec_key_template.py +0 -0
  81. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/dnssec_policy.py +0 -0
  82. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/nameserver.py +0 -0
  83. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/record.py +0 -0
  84. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/record_template.py +0 -0
  85. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/registrar.py +0 -0
  86. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/registration_contact.py +0 -0
  87. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/view.py +0 -0
  88. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/zone.py +0 -0
  89. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/zone_template.py +0 -0
  90. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/schema.py +0 -0
  91. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/locale/en/LC_MESSAGES/django.mo +0 -0
  92. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/management/commands/cleanup_rrset_ttl.py +0 -0
  93. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/management/commands/setup_dnssync.py +0 -0
  94. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -0
  95. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +0 -0
  96. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0002_contact_description_registrar_description.py +0 -0
  97. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0003_default_view.py +0 -0
  98. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0004_create_and_assign_default_view.py +0 -0
  99. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0005_alter_zone_view_not_null.py +0 -0
  100. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0006_templating.py +0 -0
  101. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0007_alter_ordering_options.py +0 -0
  102. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0008_view_prefixes.py +0 -0
  103. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0009_rename_contact_registrationcontact.py +0 -0
  104. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0010_view_ip_address_filter.py +0 -0
  105. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0011_rename_related_fields.py +0 -0
  106. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0012_natural_ordering.py +0 -0
  107. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0013_zonetemplate_soa_mname_zonetemplate_soa_rname.py +0 -0
  108. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0014_alter_unique_constraints_lowercase.py +0 -0
  109. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0015_dnssec.py +0 -0
  110. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0016_dnssec_policy_status.py +0 -0
  111. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0017_dnssec_policy_zone_zone_template.py +0 -0
  112. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0018_zone_domain_status_zone_expiration_date.py +0 -0
  113. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0019_dnssecpolicy_parental_agents.py +0 -0
  114. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0020_netbox_3_4.py +0 -0
  115. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0020_remove_dnssecpolicy_parental_agents_and_more.py +0 -0
  116. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0021_alter_record_ptr_record.py +0 -0
  117. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0021_record_ip_address.py +0 -0
  118. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0022_alter_record_ipam_ip_address.py +0 -0
  119. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0022_search.py +0 -0
  120. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0023_alter_record_value.py +0 -0
  121. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0024_tenancy.py +0 -0
  122. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0025_ipam_coupling_cf.py +0 -0
  123. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0026_domain_registration.py +0 -0
  124. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0027_alter_registrar_iana_id.py +0 -0
  125. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0028_rfc2317_fields.py +0 -0
  126. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0029_record_fqdn.py +0 -0
  127. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/__init__.py +0 -0
  128. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/mixins/__init__.py +0 -0
  129. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/mixins/object_modification.py +0 -0
  130. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/__init__.py +0 -0
  131. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/dnssec_policy.py +0 -0
  132. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/nameserver.py +0 -0
  133. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/record.py +0 -0
  134. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/record_template.py +0 -0
  135. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/registrar.py +0 -0
  136. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/registration_contact.py +0 -0
  137. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/view.py +0 -0
  138. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/navigation.py +0 -0
  139. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/signals/__init__.py +0 -0
  140. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/signals/dnssec.py +0 -0
  141. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/signals/ipam_dnssync.py +0 -0
  142. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/__init__.py +0 -0
  143. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/dnssec_key_template.py +0 -0
  144. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/dnssec_policy.py +0 -0
  145. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/ipam_dnssync.py +0 -0
  146. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/nameserver.py +0 -0
  147. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/record.py +0 -0
  148. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/record_template.py +0 -0
  149. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/registrar.py +0 -0
  150. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/registration_contact.py +0 -0
  151. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/view.py +0 -0
  152. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/zone.py +0 -0
  153. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/zone_template.py +0 -0
  154. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/template_content.py +0 -0
  155. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/dnsseckeytemplate.html +0 -0
  156. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/dnssecpolicy.html +0 -0
  157. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/nameserver.html +0 -0
  158. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/record/managed.html +0 -0
  159. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/record/related.html +0 -0
  160. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/record.html +0 -0
  161. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/recordtemplate.html +0 -0
  162. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/registrar.html +0 -0
  163. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/registrationcontact.html +0 -0
  164. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/view/button.html +0 -0
  165. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/view/prefix.html +0 -0
  166. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/view/related.html +0 -0
  167. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/view.html +0 -0
  168. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/base.html +0 -0
  169. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/child.html +0 -0
  170. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/child_zone.html +0 -0
  171. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/delegation_record.html +0 -0
  172. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/managed_record.html +0 -0
  173. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/record.html +0 -0
  174. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/registration.html +0 -0
  175. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +0 -0
  176. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone.html +0 -0
  177. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zonetemplate/child.html +0 -0
  178. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templatetags/__init__.py +0 -0
  179. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templatetags/netbox_dns.py +0 -0
  180. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/urls.py +0 -0
  181. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/utilities/__init__.py +0 -0
  182. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/utilities/conversions.py +0 -0
  183. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/utilities/dns.py +0 -0
  184. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/__init__.py +0 -0
  185. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/dns_name.py +0 -0
  186. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/dns_value.py +0 -0
  187. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/dnssec.py +0 -0
  188. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/rfc2317.py +0 -0
  189. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/__init__.py +0 -0
  190. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/dnssec_key_template.py +0 -0
  191. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/dnssec_policy.py +0 -0
  192. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/nameserver.py +0 -0
  193. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/record_template.py +0 -0
  194. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/registrar.py +0 -0
  195. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/registration_contact.py +0 -0
  196. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/view.py +0 -0
  197. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/zone.py +0 -0
  198. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/zone_template.py +0 -0
  199. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/dependency_links.txt +0 -0
  200. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/requires.txt +0 -0
  201. {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/top_level.txt +0 -0
  202. {netbox_plugin_dns-1.3.5 → 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.5
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.5"
7
+ __version__ = "1.4.0"
8
8
 
9
9
 
10
10
  def _check_list(setting):
@@ -16,7 +16,7 @@ class DNSConfig(PluginConfig):
16
16
  name = "netbox_dns"
17
17
  verbose_name = _("NetBox DNS")
18
18
  description = _("NetBox plugin for DNS data")
19
- min_version = "4.3.0"
19
+ min_version = "4.3.2"
20
20
  version = __version__
21
21
  author = "Peter Eckel"
22
22
  author_email = "pete@netbox-dns.org"
@@ -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")
@@ -186,7 +186,7 @@ class Command(BaseCommand):
186
186
 
187
187
  for record in orphaned_ptr_records:
188
188
  if options.get("verbosity") > 1:
189
- self.stdout.write("Removing orphaned PTR record '{record}'")
189
+ self.stdout.write(f"Removing orphaned PTR record '{record}'")
190
190
  record.delete()
191
191
 
192
192
  def _record_remove_orphaned_address_records(self, **options):
@@ -201,5 +201,5 @@ class Command(BaseCommand):
201
201
 
202
202
  for record in orphaned_address_records:
203
203
  if options.get("verbosity") > 1:
204
- self.stdout.write("Removing orphaned address record '{record}'")
204
+ self.stdout.write(f"Removing orphaned address record '{record}'")
205
205
  record.delete()
@@ -8,13 +8,6 @@ from netbox_dns.utilities import update_dns_records, get_zones
8
8
  class Command(BaseCommand):
9
9
  help = "Rebuild DNSsync relationships between IP addresses and records"
10
10
 
11
- def add_arguments(self, parser):
12
- parser.add_argument(
13
- "--force",
14
- action="store_true",
15
- help="Update records even if DNS name was not changed (required for rebuilding filtered views)",
16
- )
17
-
18
11
  def handle(self, *model_names, **options):
19
12
  ip_addresses = IPAddress.objects.all()
20
13
  for ip_address in ip_addresses:
@@ -24,10 +17,7 @@ class Command(BaseCommand):
24
17
  )
25
18
  if options.get("verbosity") >= 3:
26
19
  self.stdout.write(f" Zones: {get_zones(ip_address)}")
27
- if (
28
- update_dns_records(ip_address, force=options.get("force"))
29
- and options.get("verbosity") >= 1
30
- ):
20
+ if update_dns_records(ip_address) and options.get("verbosity") >= 1:
31
21
  self.stdout.write(
32
22
  f"Updated DNS records for IP Address {ip_address}, VRF {ip_address.vrf}"
33
23
  )
@@ -0,0 +1,27 @@
1
+ # Generated by Django 5.2.3 on 2025-07-30 18:54
2
+
3
+ from django.db import migrations
4
+
5
+ from netbox_dns.choices import RecordTypeChoices
6
+
7
+
8
+ def set_disable_ptr_false(apps, schema_editor):
9
+ Record = apps.get_model("netbox_dns", "Record")
10
+
11
+ for record in Record.objects.exclude(
12
+ type__in=(RecordTypeChoices.A, RecordTypeChoices.AAAA)
13
+ ):
14
+ if record.disable_ptr:
15
+ record.disable_ptr = False
16
+ record.save()
17
+
18
+
19
+ class Migration(migrations.Migration):
20
+
21
+ dependencies = [
22
+ ("netbox_dns", "0022_alter_record_ipam_ip_address"),
23
+ ]
24
+
25
+ operations = [
26
+ migrations.RunPython(set_disable_ptr_false),
27
+ ]
@@ -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 %}
@@ -187,15 +187,14 @@ def update_dns_records(ip_address, view=None, force=False):
187
187
  continue
188
188
 
189
189
  record.update_fqdn()
190
- if not _match_data(ip_address, record) or force:
191
- updated, deleted = record.update_from_ip_address(ip_address)
192
-
193
- if deleted:
194
- record.delete()
195
- updated = True
196
- elif updated:
197
- record.save()
198
- updated = True
190
+ updated, deleted = record.update_from_ip_address(ip_address)
191
+
192
+ if deleted:
193
+ record.delete()
194
+ updated = True
195
+ elif updated:
196
+ record.save()
197
+ updated = True
199
198
 
200
199
  zones = Zone.objects.filter(pk__in=[zone.pk for zone in zones]).exclude(
201
200
  pk__in=set(ip_address.netbox_dns_records.values_list("zone", flat=True))
@@ -68,7 +68,9 @@ class RecordView(generic.ObjectView):
68
68
  value_fqdn = dns_name.from_text(instance.value_fqdn)
69
69
 
70
70
  cname_targets = Record.objects.filter(
71
- zone__view=instance.zone.view, fqdn=value_fqdn
71
+ zone__view=instance.zone.view,
72
+ fqdn=value_fqdn,
73
+ active=True,
72
74
  )
73
75
 
74
76
  if cname_targets:
@@ -98,6 +100,7 @@ class RecordView(generic.ObjectView):
98
100
  zone__view=instance.zone.view,
99
101
  value=instance.fqdn,
100
102
  type=RecordTypeChoices.CNAME,
103
+ active=True,
101
104
  )
102
105
  )
103
106
 
@@ -112,6 +115,7 @@ class RecordView(generic.ObjectView):
112
115
  zone__view=instance.zone.view,
113
116
  type=RecordTypeChoices.CNAME,
114
117
  zone=parent_zone,
118
+ active=True,
115
119
  )
116
120
  cname_records = cname_records.union(
117
121
  {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: netbox-plugin-dns
3
- Version: 1.3.5
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
@@ -108,7 +108,9 @@ netbox_dns/migrations/0021_record_ip_address.py
108
108
  netbox_dns/migrations/0022_alter_record_ipam_ip_address.py
109
109
  netbox_dns/migrations/0022_search.py
110
110
  netbox_dns/migrations/0023_alter_record_value.py
111
+ netbox_dns/migrations/0023_disable_ptr_false.py
111
112
  netbox_dns/migrations/0024_tenancy.py
113
+ netbox_dns/migrations/0024_zonetemplate_parental_agents.py
112
114
  netbox_dns/migrations/0025_ipam_coupling_cf.py
113
115
  netbox_dns/migrations/0026_domain_registration.py
114
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.5"
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"},