Add views & URLs

This commit is contained in:
jeremystretch 2022-03-15 14:28:48 -04:00
parent 4ae4d0cb15
commit b2f1369029
3 changed files with 90 additions and 0 deletions

View File

@ -1,5 +1,6 @@
from django.contrib.postgres.fields import ArrayField
from django.db import models
from django.urls import reverse
from netbox.models import NetBoxModel
from utilities.choices import ChoiceSet
@ -42,6 +43,10 @@ class AccessList(NetBoxModel):
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('plugins:netbox_access_lists:accesslist', args=[self.pk])
class AccessListRule(NetBoxModel):
access_list = models.ForeignKey(
to=AccessList,
@ -94,3 +99,6 @@ class AccessListRule(NetBoxModel):
def __str__(self):
return f'{self.access_list}: Rule {self.index}'
def get_absolute_url(self):
return reverse('plugins:netbox_access_lists:accesslistrule', args=[self.pk])

View File

@ -0,0 +1,30 @@
from django.urls import path
from netbox.views.generic import ObjectChangeLogView
from . import models, views
urlpatterns = (
# Access lists
path('access-lists/', views.AccessListListView.as_view(), name='accesslist_list'),
path('access-lists/add/', views.AccessListEditView.as_view(), name='accesslist_add'),
path('access-lists/<int:pk>/', views.AccessListView.as_view(), name='accesslist'),
path('access-lists/<int:pk>/edit/', views.AccessListEditView.as_view(), name='accesslist_edit'),
path('access-lists/<int:pk>/delete/', views.AccessListDeleteView.as_view(), name='accesslist_delete'),
path('access-lists/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='accesslist_changelog', kwargs={
'model': models.AccessList
}),
# Access list rules
path('rules/', views.AccessListRuleListView.as_view(), name='accesslistrule_list'),
path('rules/add/', views.AccessListRuleEditView.as_view(), name='accesslistrule_add'),
path('rules/<int:pk>/', views.AccessListRuleView.as_view(), name='accesslistrule'),
path('rules/<int:pk>/edit/', views.AccessListRuleEditView.as_view(), name='accesslistrule_edit'),
path('rules/<int:pk>/delete/', views.AccessListRuleDeleteView.as_view(), name='accesslistrule_delete'),
path('rules/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='accesslistrule_changelog', kwargs={
'model': models.AccessListRule
}),
)

View File

@ -0,0 +1,52 @@
from django.db.models import Count
from netbox.views import generic
from . import forms, models, tables
#
# Access lists
#
class AccessListView(generic.ObjectView):
queryset = models.AccessList.objects.all()
class AccessListListView(generic.ObjectListView):
queryset = models.AccessList.objects.annotate(
rule_count=Count('rules')
)
table = tables.AccessListTable
class AccessListEditView(generic.ObjectEditView):
queryset = models.AccessList.objects.all()
model_form = forms.AccessListForm
class AccessListDeleteView(generic.ObjectDeleteView):
queryset = models.AccessList.objects.all()
#
# Access list rules
#
class AccessListRuleView(generic.ObjectView):
queryset = models.AccessListRule.objects.all()
class AccessListRuleListView(generic.ObjectListView):
queryset = models.AccessListRule.objects.all()
table = tables.AccessListRuleTable
class AccessListRuleEditView(generic.ObjectEditView):
queryset = models.AccessListRule.objects.all()
model_form = forms.AccessListRuleForm
class AccessListRuleDeleteView(generic.ObjectDeleteView):
queryset = models.AccessListRule.objects.all()