Move from hard-coded CatalogZone SOA values (refresh, retry, expire and minimum)

to DB driven to permit user modification:

modified:   netbox_dns_bridge/models.py
  Add 4 cols for values.

modified:   netbox_dns_bridge/migrations/0003_catalogzone_and_per_zone_identifier.py
  Adjust migration. This expects that the last migration the user has is 0002 (<=v1.5.8)

modified:   netbox_dns_bridge/jobs/notify.py
modified:   netbox_dns_bridge/management/commands/dns_transfer_endpoint/catalog_zone_manager.py
  Update to use new db values for SOA creation.

Change UI to permit editing for SOA values and disable member identifier editing.
modified:   netbox_dns_bridge/forms.py
modified:   netbox_dns_bridge/navigation.py
new file:   netbox_dns_bridge/templates/netbox_dns_bridge/catalog_zone_edit.html
new file:   netbox_dns_bridge/templates/netbox_dns_bridge/catalog_zone_list.html
new file:   netbox_dns_bridge/templates/netbox_dns_bridge/catalog_zone_members.html
deleted:    netbox_dns_bridge/templates/netbox_dns_bridge/catz_overview.html
modified:   netbox_dns_bridge/tables.py
modified:   netbox_dns_bridge/urls.py
modified:   netbox_dns_bridge/views.py
modified:   netbox_dns_bridge/filtersets.py
  GUI components are entirely AI generated. Plumbing also with AI assist but code verified.
This commit is contained in:
sven authored and Sven Luthi committed 2026-09-02 12:05:21 +02:00
1 parent 69781e2b08
commit a3f53767e4
14 files changed
+209 -63

No files matched your search

+8
View File
@@ -1,4 +1,5 @@
from django.db import models
from django.urls import reverse
# import netbox.models
import netbox_dns.models
@@ -13,6 +14,10 @@ class CatalogZone(models.Model):
related_name="catalog_zone",
)
soa_serial = models.IntegerField(default=1)
soa_refresh = models.IntegerField(default=60)
soa_retry = models.IntegerField(default=10)
soa_expire = models.IntegerField(default=1209600)
soa_minimum = models.IntegerField(default=0)
class Meta:
ordering = ("view__name",)
@@ -20,6 +25,9 @@ class CatalogZone(models.Model):
def __str__(self):
return f"{self.view.name}: {self.soa_serial}"
def get_absolute_url(self):
return reverse("plugins:netbox_dns_bridge:catalogzone_edit", args=[self.pk])
class CatalogZoneMemberIdentifier(models.Model):
_netbox_private = True