netbox-plugin-dns 1.2.7b2__tar.gz → 1.2.7b3__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 (183) hide show
  1. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/PKG-INFO +1 -1
  2. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/__init__.py +1 -1
  3. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/nested_serializers.py +19 -1
  4. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers_/dnssec_key_template.py +11 -0
  5. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers_/dnssec_policy.py +17 -0
  6. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/choices/dnssec_key_template.py +2 -2
  7. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/fields/choice_array.py +13 -0
  8. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/fields/timeperiod.py +9 -1
  9. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/filtersets/dnssec_key_template.py +2 -2
  10. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/filtersets/dnssec_policy.py +27 -3
  11. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/forms/dnssec_key_template.py +2 -2
  12. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/forms/dnssec_policy.py +31 -4
  13. netbox_plugin_dns-1.2.7b3/netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
  14. netbox_plugin_dns-1.2.7b3/netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
  15. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/models/dnssec_policy.py +5 -3
  16. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/validators/dnssec.py +10 -8
  17. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/views/dnssec_policy.py +3 -1
  18. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_plugin_dns.egg-info/PKG-INFO +1 -1
  19. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/pyproject.toml +1 -1
  20. netbox_plugin_dns-1.2.7b2/netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
  21. netbox_plugin_dns-1.2.7b2/netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
  22. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/LICENSE +0 -0
  23. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/README.md +0 -0
  24. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers.py +0 -0
  25. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers_/__init__.py +0 -0
  26. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers_/nameserver.py +0 -0
  27. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers_/prefix.py +0 -0
  28. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers_/record.py +0 -0
  29. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers_/record_template.py +0 -0
  30. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers_/registrar.py +0 -0
  31. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers_/registration_contact.py +0 -0
  32. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers_/view.py +0 -0
  33. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers_/zone.py +0 -0
  34. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/serializers_/zone_template.py +0 -0
  35. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/urls.py +0 -0
  36. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/api/views.py +0 -0
  37. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/apps.py +0 -0
  38. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/choices/__init__.py +0 -0
  39. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/choices/dnssec_policy.py +0 -0
  40. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/choices/record.py +0 -0
  41. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/choices/utilities.py +0 -0
  42. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/choices/zone.py +0 -0
  43. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/fields/__init__.py +0 -0
  44. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/fields/address.py +0 -0
  45. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/fields/ipam.py +0 -0
  46. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/fields/network.py +0 -0
  47. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/fields/rfc2317.py +0 -0
  48. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/filtersets/__init__.py +0 -0
  49. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/filtersets/nameserver.py +0 -0
  50. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/filtersets/record.py +0 -0
  51. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/filtersets/record_template.py +0 -0
  52. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/filtersets/registrar.py +0 -0
  53. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/filtersets/registration_contact.py +0 -0
  54. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/filtersets/view.py +0 -0
  55. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/filtersets/zone.py +0 -0
  56. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/filtersets/zone_template.py +0 -0
  57. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/forms/__init__.py +0 -0
  58. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/forms/nameserver.py +0 -0
  59. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/forms/record.py +0 -0
  60. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/forms/record_template.py +0 -0
  61. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/forms/registrar.py +0 -0
  62. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/forms/registration_contact.py +0 -0
  63. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/forms/view.py +0 -0
  64. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/forms/zone.py +0 -0
  65. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/forms/zone_template.py +0 -0
  66. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/graphql/__init__.py +0 -0
  67. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/graphql/filters.py +0 -0
  68. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/graphql/schema.py +0 -0
  69. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/graphql/types.py +0 -0
  70. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/locale/en/LC_MESSAGES/django.mo +0 -0
  71. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/management/commands/cleanup_database.py +0 -0
  72. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/management/commands/cleanup_rrset_ttl.py +0 -0
  73. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/management/commands/rebuild_dnssync.py +0 -0
  74. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/management/commands/setup_dnssync.py +0 -0
  75. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/management/commands/update_soa.py +0 -0
  76. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -0
  77. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +0 -0
  78. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0002_contact_description_registrar_description.py +0 -0
  79. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0003_default_view.py +0 -0
  80. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0004_create_and_assign_default_view.py +0 -0
  81. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0005_alter_zone_view_not_null.py +0 -0
  82. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0006_templating.py +0 -0
  83. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0007_alter_ordering_options.py +0 -0
  84. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0008_view_prefixes.py +0 -0
  85. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0009_rename_contact_registrationcontact.py +0 -0
  86. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0010_view_ip_address_filter.py +0 -0
  87. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0011_rename_related_fields.py +0 -0
  88. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0012_natural_ordering.py +0 -0
  89. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0013_zonetemplate_soa_mname_zonetemplate_soa_rname.py +0 -0
  90. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0014_alter_unique_constraints_lowercase.py +0 -0
  91. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0015_dnssec.py +0 -0
  92. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0016_dnssec_policy_status.py +0 -0
  93. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0017_dnssec_policy_zone_zone_template.py +0 -0
  94. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0020_netbox_3_4.py +0 -0
  95. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0021_record_ip_address.py +0 -0
  96. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0022_search.py +0 -0
  97. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0023_alter_record_value.py +0 -0
  98. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0024_tenancy.py +0 -0
  99. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0025_ipam_coupling_cf.py +0 -0
  100. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0026_domain_registration.py +0 -0
  101. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0027_alter_registrar_iana_id.py +0 -0
  102. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0028_rfc2317_fields.py +0 -0
  103. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/0029_record_fqdn.py +0 -0
  104. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/migrations/__init__.py +0 -0
  105. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/mixins/__init__.py +0 -0
  106. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/mixins/object_modification.py +0 -0
  107. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/models/__init__.py +0 -0
  108. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/models/dnssec_key_template.py +0 -0
  109. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/models/nameserver.py +0 -0
  110. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/models/record.py +0 -0
  111. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/models/record_template.py +0 -0
  112. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/models/registrar.py +0 -0
  113. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/models/registration_contact.py +0 -0
  114. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/models/view.py +0 -0
  115. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/models/zone.py +0 -0
  116. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/models/zone_template.py +0 -0
  117. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/navigation.py +0 -0
  118. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/signals/__init__.py +0 -0
  119. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/signals/dnssec.py +0 -0
  120. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/signals/ipam_dnssync.py +0 -0
  121. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/tables/__init__.py +0 -0
  122. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/tables/dnssec_key_template.py +0 -0
  123. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/tables/dnssec_policy.py +0 -0
  124. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/tables/ipam_dnssync.py +0 -0
  125. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/tables/nameserver.py +0 -0
  126. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/tables/record.py +0 -0
  127. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/tables/record_template.py +0 -0
  128. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/tables/registrar.py +0 -0
  129. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/tables/registration_contact.py +0 -0
  130. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/tables/view.py +0 -0
  131. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/tables/zone.py +0 -0
  132. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/tables/zone_template.py +0 -0
  133. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/template_content.py +0 -0
  134. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/dnsseckeytemplate.html +0 -0
  135. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/dnssecpolicy.html +0 -0
  136. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/nameserver.html +0 -0
  137. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/record/managed.html +0 -0
  138. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/record/related.html +0 -0
  139. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/record.html +0 -0
  140. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/recordtemplate.html +0 -0
  141. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/registrar.html +0 -0
  142. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/registrationcontact.html +0 -0
  143. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/view/button.html +0 -0
  144. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/view/prefix.html +0 -0
  145. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/view/related.html +0 -0
  146. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/view.html +0 -0
  147. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/zone/base.html +0 -0
  148. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/zone/child.html +0 -0
  149. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/zone/child_zone.html +0 -0
  150. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/zone/delegation_record.html +0 -0
  151. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/zone/managed_record.html +0 -0
  152. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/zone/record.html +0 -0
  153. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/zone/registration.html +0 -0
  154. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +0 -0
  155. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/zone.html +0 -0
  156. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/zonetemplate/child.html +0 -0
  157. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templates/netbox_dns/zonetemplate.html +0 -0
  158. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templatetags/__init__.py +0 -0
  159. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/templatetags/netbox_dns.py +0 -0
  160. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/urls.py +0 -0
  161. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/utilities/__init__.py +0 -0
  162. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/utilities/conversions.py +0 -0
  163. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/utilities/dns.py +0 -0
  164. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/utilities/ipam_dnssync.py +0 -0
  165. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/validators/__init__.py +0 -0
  166. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/validators/dns_name.py +0 -0
  167. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/validators/dns_value.py +0 -0
  168. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/validators/rfc2317.py +0 -0
  169. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/views/__init__.py +0 -0
  170. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/views/dnssec_key_template.py +0 -0
  171. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/views/nameserver.py +0 -0
  172. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/views/record.py +0 -0
  173. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/views/record_template.py +0 -0
  174. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/views/registrar.py +0 -0
  175. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/views/registration_contact.py +0 -0
  176. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/views/view.py +0 -0
  177. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/views/zone.py +0 -0
  178. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_dns/views/zone_template.py +0 -0
  179. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_plugin_dns.egg-info/SOURCES.txt +0 -0
  180. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_plugin_dns.egg-info/dependency_links.txt +0 -0
  181. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_plugin_dns.egg-info/requires.txt +0 -0
  182. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/netbox_plugin_dns.egg-info/top_level.txt +0 -0
  183. {netbox_plugin_dns-1.2.7b2 → netbox_plugin_dns-1.2.7b3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: netbox-plugin-dns
3
- Version: 1.2.7b2
3
+ Version: 1.2.7b3
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.2.7-beta2"
10
+ __version__ = "1.2.7-beta3"
11
11
 
12
12
 
13
13
  def _check_list(setting):
@@ -3,7 +3,7 @@ from rest_framework import serializers
3
3
 
4
4
  from netbox.api.serializers import WritableNestedSerializer
5
5
 
6
- from netbox_dns.models import Zone, Record, ZoneTemplate, RecordTemplate
6
+ from netbox_dns.models import Zone, Record, ZoneTemplate, RecordTemplate, DNSSECPolicy
7
7
  from netbox_dns.api.serializers_.view import ViewSerializer
8
8
 
9
9
 
@@ -12,6 +12,7 @@ __all__ = (
12
12
  "NestedRecordSerializer",
13
13
  "NestedZoneTemplateSerializer",
14
14
  "NestedRecordTemplateSerializer",
15
+ "NestedDNSSECPolicySerializer",
15
16
  )
16
17
 
17
18
 
@@ -127,3 +128,20 @@ class NestedRecordTemplateSerializer(WritableNestedSerializer):
127
128
  "ttl",
128
129
  "description",
129
130
  )
131
+
132
+
133
+ class NestedDNSSECPolicySerializer(WritableNestedSerializer):
134
+ url = serializers.HyperlinkedIdentityField(
135
+ view_name="plugins-api:netbox_dns-api:dnssecpolicy-detail"
136
+ )
137
+
138
+ class Meta:
139
+ model = DNSSECPolicy
140
+ fields = (
141
+ "id",
142
+ "url",
143
+ "display",
144
+ "name",
145
+ "description",
146
+ "status",
147
+ )
@@ -1,3 +1,4 @@
1
+ from django.utils.translation import gettext as _
1
2
  from rest_framework import serializers
2
3
 
3
4
  from netbox.api.serializers import NetBoxModelSerializer
@@ -5,6 +6,8 @@ from tenancy.api.serializers_.tenants import TenantSerializer
5
6
 
6
7
  from netbox_dns.models import DNSSECKeyTemplate
7
8
 
9
+ from ..nested_serializers import NestedDNSSECPolicySerializer
10
+
8
11
 
9
12
  __all__ = ("DNSSECKeyTemplateSerializer",)
10
13
 
@@ -13,6 +16,13 @@ class DNSSECKeyTemplateSerializer(NetBoxModelSerializer):
13
16
  url = serializers.HyperlinkedIdentityField(
14
17
  view_name="plugins-api:netbox_dns-api:dnsseckeytemplate-detail"
15
18
  )
19
+ policies = NestedDNSSECPolicySerializer(
20
+ many=True,
21
+ read_only=True,
22
+ required=False,
23
+ default=None,
24
+ help_text=_("Policies using this Key Template"),
25
+ )
16
26
  tenant = TenantSerializer(required=False, allow_null=True)
17
27
 
18
28
  class Meta:
@@ -23,6 +33,7 @@ class DNSSECKeyTemplateSerializer(NetBoxModelSerializer):
23
33
  "display",
24
34
  "name",
25
35
  "description",
36
+ "policies",
26
37
  "tags",
27
38
  "type",
28
39
  "lifetime",
@@ -7,6 +7,7 @@ from tenancy.api.serializers_.tenants import TenantSerializer
7
7
  from netbox_dns.models import DNSSECPolicy
8
8
 
9
9
  from .dnssec_key_template import DNSSECKeyTemplateSerializer
10
+ from ..nested_serializers import NestedZoneSerializer, NestedZoneTemplateSerializer
10
11
 
11
12
 
12
13
  __all__ = ("DNSSECPolicySerializer",)
@@ -24,6 +25,20 @@ class DNSSECPolicySerializer(NetBoxModelSerializer):
24
25
  default=None,
25
26
  help_text=_("Key templates assigned to the policy"),
26
27
  )
28
+ zones = NestedZoneSerializer(
29
+ many=True,
30
+ read_only=True,
31
+ required=False,
32
+ default=None,
33
+ help_text=_("Zones this policy is assigned to"),
34
+ )
35
+ zone_templates = NestedZoneTemplateSerializer(
36
+ many=True,
37
+ read_only=True,
38
+ required=False,
39
+ default=None,
40
+ help_text=_("Zone templates this policy is assigned to"),
41
+ )
27
42
  tenant = TenantSerializer(required=False, allow_null=True)
28
43
 
29
44
  class Meta:
@@ -37,6 +52,8 @@ class DNSSECPolicySerializer(NetBoxModelSerializer):
37
52
  "status",
38
53
  "tags",
39
54
  "key_templates",
55
+ "zones",
56
+ "zone_templates",
40
57
  "dnskey_ttl",
41
58
  "purge_keys",
42
59
  "publish_safety",
@@ -57,7 +57,7 @@ class DNSSECKeyTemplateKeySizeChoices(ChoiceSet):
57
57
  @define_choice_attributes()
58
58
  class DNSSECKeyTemplateAlgorithmChoices(ChoiceSet):
59
59
  CHOICES = [
60
- (algorithm.name, algorithm.name)
61
- for algorithm in sorted(Algorithm, key=lambda a: a.name)
60
+ (algorithm.name, f"{algorithm.name} ({algorithm.value})")
61
+ for algorithm in sorted(Algorithm, key=lambda a: a.value)
62
62
  if algorithm.value < 252 and algorithm not in DEPRECATED_ALGORITHMS
63
63
  ]
@@ -1,5 +1,15 @@
1
1
  from django import forms
2
2
  from django.contrib.postgres.fields import ArrayField
3
+ from django.db.models import Transform, IntegerField
4
+
5
+
6
+ class ArrayLength(Transform):
7
+ lookup_name = "length"
8
+ function = "cardinality"
9
+
10
+ @property
11
+ def output_field(self):
12
+ return IntegerField()
3
13
 
4
14
 
5
15
  class _TypedMultipleChoiceField(forms.TypedMultipleChoiceField):
@@ -18,3 +28,6 @@ class ChoiceArrayField(ArrayField):
18
28
  coerce=self.base_field.to_python,
19
29
  **kwargs,
20
30
  )
31
+
32
+
33
+ ChoiceArrayField.register_lookup(ArrayLength)
@@ -1,4 +1,4 @@
1
- from django.forms import Field
1
+ from django.forms import Field, TextInput
2
2
  from django.utils.dateparse import parse_duration
3
3
  from django.core.exceptions import ValidationError
4
4
 
@@ -7,6 +7,14 @@ __all__ = ("TimePeriodField",)
7
7
 
8
8
 
9
9
  class TimePeriodField(Field):
10
+ def __init__(self, *args, **kwargs):
11
+ placeholder = kwargs.pop("placeholder", None)
12
+
13
+ if placeholder is not None:
14
+ self.widget = TextInput(attrs={"placeholder": placeholder})
15
+
16
+ return super().__init__(*args, **kwargs)
17
+
10
18
  def to_python(self, value):
11
19
  if not value:
12
20
  return None
@@ -27,13 +27,13 @@ class DNSSECKeyTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
27
27
  choices=DNSSECKeyTemplateKeySizeChoices,
28
28
  )
29
29
 
30
- policy_id = django_filters.ModelMultipleChoiceFilter(
30
+ policies_id = django_filters.ModelMultipleChoiceFilter(
31
31
  field_name="policies",
32
32
  queryset=DNSSECPolicy.objects.all(),
33
33
  to_field_name="id",
34
34
  label=_("DNSSEC Policy IDs"),
35
35
  )
36
- policy = django_filters.ModelMultipleChoiceFilter(
36
+ policies = django_filters.ModelMultipleChoiceFilter(
37
37
  field_name="policies__name",
38
38
  queryset=DNSSECPolicy.objects.all(),
39
39
  to_field_name="name",
@@ -7,7 +7,7 @@ from netbox.filtersets import NetBoxModelFilterSet
7
7
  from tenancy.filtersets import TenancyFilterSet
8
8
  from utilities.filters import MultiValueCharFilter
9
9
 
10
- from netbox_dns.models import DNSSECPolicy, DNSSECKeyTemplate
10
+ from netbox_dns.models import DNSSECPolicy, DNSSECKeyTemplate, Zone, ZoneTemplate
11
11
  from netbox_dns.choices import DNSSECPolicyStatusChoices
12
12
 
13
13
  __all__ = ("DNSSECPolicyFilterSet",)
@@ -47,18 +47,42 @@ class DNSSECPolicyFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
47
47
  method="filter_cds_digest_types",
48
48
  label=_("CDS Digest Types"),
49
49
  )
50
- key_template = django_filters.ModelMultipleChoiceFilter(
50
+ key_templates = django_filters.ModelMultipleChoiceFilter(
51
51
  field_name="key_templates__name",
52
52
  queryset=DNSSECKeyTemplate.objects.all(),
53
53
  to_field_name="name",
54
54
  label=_("DNSSEC Key Templates"),
55
55
  )
56
- key_template_id = django_filters.ModelMultipleChoiceFilter(
56
+ key_templates_id = django_filters.ModelMultipleChoiceFilter(
57
57
  field_name="key_templates",
58
58
  queryset=DNSSECKeyTemplate.objects.all(),
59
59
  to_field_name="id",
60
60
  label=_("DNSSEC Key Template IDs"),
61
61
  )
62
+ zones = django_filters.ModelMultipleChoiceFilter(
63
+ field_name="zones__name",
64
+ queryset=Zone.objects.all(),
65
+ to_field_name="name",
66
+ label=_("Zones"),
67
+ )
68
+ zones_id = django_filters.ModelMultipleChoiceFilter(
69
+ field_name="zones",
70
+ queryset=Zone.objects.all(),
71
+ to_field_name="id",
72
+ label=_("Zone IDs"),
73
+ )
74
+ zone_templates = django_filters.ModelMultipleChoiceFilter(
75
+ field_name="zone_templates__name",
76
+ queryset=ZoneTemplate.objects.all(),
77
+ to_field_name="name",
78
+ label=_("Zone Templates"),
79
+ )
80
+ zone_templates_id = django_filters.ModelMultipleChoiceFilter(
81
+ field_name="zone_templates",
82
+ queryset=ZoneTemplate.objects.all(),
83
+ to_field_name="id",
84
+ label=_("Zone Template IDs"),
85
+ )
62
86
 
63
87
  def filter_cds_digest_types(self, queryset, name, value):
64
88
  if not value:
@@ -68,7 +68,7 @@ class DNSSECKeyTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
68
68
  fieldsets = (
69
69
  FieldSet("q", "filter_id", "tag"),
70
70
  FieldSet("name", "description", name=_("Attributes")),
71
- FieldSet("policy_id", name=_("Policies")),
71
+ FieldSet("policies_id", name=_("Policies")),
72
72
  FieldSet("type", "lifetime", "algorithm", "key_size", name=_("Key Properties")),
73
73
  FieldSet("tenant_group_id", "tenant_id", name=_("Tenancy")),
74
74
  )
@@ -79,7 +79,7 @@ class DNSSECKeyTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
79
79
  description = forms.CharField(
80
80
  required=False,
81
81
  )
82
- policy_id = DynamicModelMultipleChoiceField(
82
+ policies_id = DynamicModelMultipleChoiceField(
83
83
  queryset=DNSSECPolicy.objects.all(),
84
84
  required=False,
85
85
  label=_("Policies"),
@@ -23,7 +23,7 @@ from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, add_blank_choice
23
23
  from tenancy.models import Tenant, TenantGroup
24
24
  from tenancy.forms import TenancyForm, TenancyFilterForm
25
25
 
26
- from netbox_dns.models import DNSSECPolicy, DNSSECKeyTemplate
26
+ from netbox_dns.models import DNSSECPolicy, DNSSECKeyTemplate, Zone, ZoneTemplate
27
27
  from netbox_dns.choices import DNSSECPolicyDigestChoices, DNSSECPolicyStatusChoices
28
28
  from netbox_dns.fields import TimePeriodField
29
29
 
@@ -74,7 +74,7 @@ class DNSSECPolicyForm(TenancyForm, NetBoxModelForm):
74
74
  "nsec3_salt_size",
75
75
  name=_("Proof of Non-Existence"),
76
76
  ),
77
- FieldSet("tenant_group_id", "tenant_id", name=_("Tenancy")),
77
+ FieldSet("tenant_group", "tenant", name=_("Tenancy")),
78
78
  FieldSet("tags", name=_("Tags")),
79
79
  )
80
80
 
@@ -119,50 +119,62 @@ class DNSSECPolicyForm(TenancyForm, NetBoxModelForm):
119
119
  dnskey_ttl = TimePeriodField(
120
120
  required=False,
121
121
  label=_("DNSKEY TTL"),
122
+ placeholder=DNSSECPolicy.get_fallback_setting("dnskey_ttl"),
122
123
  )
123
124
  purge_keys = TimePeriodField(
124
125
  required=False,
125
126
  label=_("Purge Keys"),
127
+ placeholder=DNSSECPolicy.get_fallback_setting("purge_keys"),
126
128
  )
127
129
  publish_safety = TimePeriodField(
128
130
  required=False,
129
131
  label=_("Publish Safety"),
132
+ placeholder=DNSSECPolicy.get_fallback_setting("publish_safety"),
130
133
  )
131
134
  retire_safety = TimePeriodField(
132
135
  required=False,
133
136
  label=_("Retire Safety"),
137
+ placeholder=DNSSECPolicy.get_fallback_setting("retire_safety"),
134
138
  )
135
139
  signatures_jitter = TimePeriodField(
136
140
  required=False,
137
141
  label=_("Signatures Jitter"),
142
+ placeholder=DNSSECPolicy.get_fallback_setting("signatures_jitter"),
138
143
  )
139
144
  signatures_refresh = TimePeriodField(
140
145
  required=False,
141
146
  label=_("Signatures Refresh"),
147
+ placeholder=DNSSECPolicy.get_fallback_setting("signatures_refresh"),
142
148
  )
143
149
  signatures_validity = TimePeriodField(
144
150
  required=False,
145
151
  label=_("Signatures Validity"),
152
+ placeholder=DNSSECPolicy.get_fallback_setting("signatures_validity"),
146
153
  )
147
154
  signatures_validity_dnskey = TimePeriodField(
148
155
  required=False,
149
156
  label=_("Signatures Validity (DNSKEY)"),
157
+ placeholder=DNSSECPolicy.get_fallback_setting("signatures_validity_dnskey"),
150
158
  )
151
159
  max_zone_ttl = TimePeriodField(
152
160
  required=False,
153
161
  label=_("Max Zone TTL"),
162
+ placeholder=DNSSECPolicy.get_fallback_setting("max_zone_ttl"),
154
163
  )
155
164
  zone_propagation_delay = TimePeriodField(
156
165
  required=False,
157
166
  label=_("Zone Propagation Delay"),
167
+ placeholder=DNSSECPolicy.get_fallback_setting("zone_propagation_delay"),
158
168
  )
159
169
  parent_ds_ttl = TimePeriodField(
160
170
  required=False,
161
171
  label=_("Parent DS TTL"),
172
+ placeholder=DNSSECPolicy.get_fallback_setting("parent_ds_ttl"),
162
173
  )
163
174
  parent_propagation_delay = TimePeriodField(
164
175
  required=False,
165
176
  label=_("Parent Propagation Delay"),
177
+ placeholder=DNSSECPolicy.get_fallback_setting("parent_propagation_delay"),
166
178
  )
167
179
 
168
180
 
@@ -174,9 +186,14 @@ class DNSSECPolicyFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
174
186
  "name",
175
187
  "description",
176
188
  "status",
177
- "key_template_id",
189
+ "key_templates_id",
178
190
  name=_("Attributes"),
179
191
  ),
192
+ FieldSet(
193
+ "zones_id",
194
+ "zone_templates_id",
195
+ name=_("Assignments"),
196
+ ),
180
197
  FieldSet(
181
198
  "dnskey_ttl",
182
199
  "purge_keys",
@@ -219,11 +236,21 @@ class DNSSECPolicyFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
219
236
  required=False,
220
237
  label=_("Status"),
221
238
  )
222
- key_template_id = DynamicModelMultipleChoiceField(
239
+ key_templates_id = DynamicModelMultipleChoiceField(
223
240
  queryset=DNSSECKeyTemplate.objects.all(),
224
241
  required=False,
225
242
  label=_("Key Templates"),
226
243
  )
244
+ zones_id = DynamicModelMultipleChoiceField(
245
+ queryset=Zone.objects.all(),
246
+ required=False,
247
+ label=_("Zones"),
248
+ )
249
+ zone_templates_id = DynamicModelMultipleChoiceField(
250
+ queryset=ZoneTemplate.objects.all(),
251
+ required=False,
252
+ label=_("Zone Templates"),
253
+ )
227
254
  dnskey_ttl = TimePeriodField(
228
255
  required=False,
229
256
  label=_("DNSKEY TTL"),
@@ -181,16 +181,18 @@ class DNSSECPolicy(ContactsMixin, NetBoxModel):
181
181
  return self.publish_safety if self.publish_safety is not None else 3600
182
182
 
183
183
  def get_effective_value(self, attribute):
184
- default_value = get_plugin_config("netbox_dns", f"dnssec_{attribute}", None)
185
-
186
184
  if not hasattr(self, attribute):
187
185
  raise AttributeError(f"DNSSECPolicy does not have attribute {attribute}")
188
186
 
189
187
  if (value := getattr(self, attribute)) is None:
190
- return default_value
188
+ return self.get_fallback_setting(attribute)
191
189
 
192
190
  return value
193
191
 
192
+ @classmethod
193
+ def get_fallback_setting(cls, attribute):
194
+ return get_plugin_config("netbox_dns", f"dnssec_{attribute}")
195
+
194
196
 
195
197
  @register_search
196
198
  class DNSSECPolicyIndex(SearchIndex):
@@ -97,8 +97,8 @@ def validate_key_template_lifetime(key_template, policy, raise_exception=True):
97
97
  ):
98
98
  validation_errors.append(
99
99
  _(
100
- "Key Lifetime is less than DNSKEY TTL + Publish Safety + Zone Propagation Delay."
101
- )
100
+ "Key Lifetime {lifetime} is less than DNSKEY TTL + Publish Safety + Zone Propagation Delay."
101
+ ).format(lifetime=key_lifetime)
102
102
  )
103
103
 
104
104
  if (
@@ -109,8 +109,8 @@ def validate_key_template_lifetime(key_template, policy, raise_exception=True):
109
109
  ):
110
110
  validation_errors.append(
111
111
  _(
112
- "Key Lifetime is less than Max Zone TTL + Retire Safety + Zone Propagation Delay."
113
- )
112
+ "Key Lifetime {lifetime} is less than Max Zone TTL + Retire Safety + Zone Propagation Delay."
113
+ ).format(lifetime=key_lifetime)
114
114
  )
115
115
 
116
116
  if key_template.type == DNSSECKeyTemplateTypeChoices.TYPE_ZSK:
@@ -123,8 +123,10 @@ def validate_key_template_lifetime(key_template, policy, raise_exception=True):
123
123
  and key_lifetime < signatures_validity - signatures_refresh
124
124
  ):
125
125
  validation_errors.append(
126
- _("Key Lifetime is less than Signatures Validity - Signatures Refresh.")
127
- )
126
+ _(
127
+ "Key Lifetime {lifetime} is less than Signatures Validity - Signatures Refresh."
128
+ )
129
+ ).format(lifetime=key_lifetime)
128
130
  else:
129
131
  parent_ds_ttl = policy.get_effective_value("parent_ds_ttl")
130
132
  parent_propagation_delay = policy.get_effective_value(
@@ -139,8 +141,8 @@ def validate_key_template_lifetime(key_template, policy, raise_exception=True):
139
141
  ):
140
142
  validation_errors.append(
141
143
  _(
142
- "Key Lifetime is less than Parent DS TTL + Retire Safety + Parent Propagation Delay."
143
- )
144
+ "Key Lifetime {lifetime} is less than Parent DS TTL + Retire Safety + Parent Propagation Delay."
145
+ ).format(lifetime=key_lifetime)
144
146
  )
145
147
 
146
148
  return validation_errors
@@ -46,7 +46,9 @@ class DNSSECPolicyListView(generic.ObjectListView):
46
46
 
47
47
  @register_model_view(DNSSECPolicy)
48
48
  class DNSSECPolicyView(generic.ObjectView):
49
- queryset = DNSSECPolicy.objects.prefetch_related("key_templates")
49
+ queryset = DNSSECPolicy.objects.prefetch_related(
50
+ "key_templates", "zones", "zone_templates"
51
+ )
50
52
 
51
53
  def get_extra_context(self, request, instance):
52
54
  context = {}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: netbox-plugin-dns
3
- Version: 1.2.7b2
3
+ Version: 1.2.7b3
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "netbox-plugin-dns"
3
- version = "1.2.7-beta2"
3
+ version = "1.2.7-beta3"
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"},