new file: netbox_dns_bridge/forms.py new file: netbox_dns_bridge/tables.py modified: netbox_dns_bridge/templates/netbox_dns_bridge/catz_overview.html modified: netbox_dns_bridge/views.py Change catz table to ObjectListView
51 lines
1.6 KiB
Python
51 lines
1.6 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 ObjectListView
|
|
|
|
from .filtersets import ZoneFilterSet
|
|
from .forms import CatalogZoneFilterForm
|
|
from .models import IntegerKeyValueSetting, SeenTransferClients
|
|
from .tables import CatalogZoneTable
|
|
|
|
|
|
@method_decorator(
|
|
user_passes_test(lambda u: u.is_superuser), name="dispatch"
|
|
)
|
|
class CatzOverviewView(ObjectListView):
|
|
queryset = netbox_dns.models.Zone.objects.select_related(
|
|
"view", "catz_identifier"
|
|
).order_by("view__name", "name")
|
|
table = CatalogZoneTable
|
|
filterset = ZoneFilterSet
|
|
filterset_form = CatalogZoneFilterForm
|
|
template_name = "netbox_dns_bridge/catz_overview.html"
|
|
actions = ()
|
|
|
|
def get_extra_context(self, request):
|
|
context = super().get_extra_context(request)
|
|
soa_serial_obj = IntegerKeyValueSetting.objects.filter(
|
|
key="catalog-zone-soa-serial"
|
|
).first()
|
|
context["soa_serial"] = soa_serial_obj.value if soa_serial_obj else None
|
|
return context
|
|
|
|
|
|
@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)
|