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.
68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
from django.contrib.auth.decorators import user_passes_test
|
|
from django.shortcuts import render
|
|
from django.utils.decorators import method_decorator
|
|
from django.views import View
|
|
|
|
import netbox_dns.models
|
|
from netbox.views.generic import ObjectEditView, ObjectListView
|
|
|
|
from .filtersets import CatalogZoneFilterSet, ZoneFilterSet
|
|
from .forms import (
|
|
CatalogZoneFilterForm,
|
|
CatalogZoneForm,
|
|
CatalogZoneMemberFilterForm,
|
|
)
|
|
from .models import CatalogZone, SeenTransferClients
|
|
from .tables import CatalogZoneMemberTable, CatalogZoneTable
|
|
|
|
|
|
@method_decorator(
|
|
user_passes_test(lambda u: u.is_superuser), name="dispatch"
|
|
)
|
|
class CatalogZoneListView(ObjectListView):
|
|
queryset = CatalogZone.objects.select_related("view").order_by("view__name")
|
|
table = CatalogZoneTable
|
|
filterset = CatalogZoneFilterSet
|
|
filterset_form = CatalogZoneFilterForm
|
|
template_name = "netbox_dns_bridge/catalog_zone_list.html"
|
|
actions = ("edit", "export")
|
|
|
|
|
|
@method_decorator(
|
|
user_passes_test(lambda u: u.is_superuser), name="dispatch"
|
|
)
|
|
class CatalogZoneEditView(ObjectEditView):
|
|
queryset = CatalogZone.objects.select_related("view")
|
|
form = CatalogZoneForm
|
|
template_name = "netbox_dns_bridge/catalog_zone_edit.html"
|
|
|
|
|
|
@method_decorator(
|
|
user_passes_test(lambda u: u.is_superuser), name="dispatch"
|
|
)
|
|
class CatalogZoneMembersView(ObjectListView):
|
|
queryset = netbox_dns.models.Zone.objects.select_related(
|
|
"view", "catz_identifier"
|
|
).order_by("view__name", "name")
|
|
table = CatalogZoneMemberTable
|
|
filterset = ZoneFilterSet
|
|
filterset_form = CatalogZoneMemberFilterForm
|
|
template_name = "netbox_dns_bridge/catalog_zone_members.html"
|
|
actions = ()
|
|
|
|
|
|
@method_decorator(
|
|
user_passes_test(lambda u: u.is_superuser), name="dispatch"
|
|
)
|
|
class NotifyOverviewView(View):
|
|
template_name = "netbox_dns_bridge/notify_overview.html"
|
|
|
|
def get(self, request):
|
|
seen_clients = (
|
|
SeenTransferClients.objects.select_related("view")
|
|
.all()
|
|
.order_by("source_ip")
|
|
)
|
|
context = {"seen_clients": seen_clients}
|
|
return render(request, self.template_name, context)
|