improved views and templates

This commit is contained in:
dreng
2023-05-09 19:32:50 +02:00
parent 25380c0618
commit a0698ed888
5 changed files with 31 additions and 11 deletions
+4 -3
View File
@@ -7,11 +7,12 @@ class CoordinateGroupListTable(NetBoxTable):
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
devices = tables.Column()
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = CoordinateGroup model = CoordinateGroup
fields = ('pk', 'name', 'description') fields = ('pk', 'id', 'name', 'description', 'devices')
default_columns = ('name', 'description') default_columns = ('name', 'description', 'devices')
class CoordinateListTable(NetBoxTable): class CoordinateListTable(NetBoxTable):
group = tables.Column( group = tables.Column(
@@ -24,6 +25,6 @@ class CoordinateListTable(NetBoxTable):
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = Coordinate model = Coordinate
fields = ('pk', 'group', 'device', 'x', 'y') fields = ('pk', 'id', 'group', 'device', 'x', 'y')
default_columns = ('id', 'group', 'device', 'x', 'y') default_columns = ('id', 'group', 'device', 'x', 'y')
@@ -1,7 +1,6 @@
{% extends 'generic/object.html' %} {% extends 'generic/object.html' %}
{% load helpers %} {% load helpers %}
{% load plugins %} {% load plugins %}
{% load render_table from django_tables2 %}
{% block title %}Topology Views Coordinates{% endblock title %} {% block title %}Topology Views Coordinates{% endblock title %}
@@ -16,11 +15,11 @@
<table class="table table-hover attr-table"> <table class="table table-hover attr-table">
<tr> <tr>
<th scope="row">Group</th> <th scope="row">Group</th>
<td>{{ object.group }}</td> <td>{{ object.group|linkify }}</td>
</tr> </tr>
<tr> <tr>
<th scope="row">Device</th> <th scope="row">Device</th>
<td>{{ object.device }}</td> <td>{{ object.device|linkify }}</td>
</tr> </tr>
<tr> <tr>
<th scope="row">X-Coordinate</th> <th scope="row">X-Coordinate</th>
@@ -32,4 +32,14 @@
{% plugin_right_page object %} {% plugin_right_page object %}
</div> </div>
</div> </div>
<div class="row">
<div class="col col-md-12">
<div class="card">
<h5 class="card-header">Coordinates</h5>
<div class="card-body table-responsive">
{% render_table coordinates_table %}
</div>
</div>
</div>
</div>
{% endblock content %} {% endblock content %}
+3 -3
View File
@@ -1,6 +1,6 @@
from django.urls import path from django.urls import path
from django.views.generic.base import RedirectView from django.views.generic.base import RedirectView
from netbox.views.generic import ObjectChangeLogView
from . import models, views from . import models, views
# Define a list of URL patterns to be imported by NetBox. Each pattern maps a URL to # Define a list of URL patterns to be imported by NetBox. Each pattern maps a URL to
@@ -17,7 +17,7 @@ urlpatterns = (
path("coordinate-groups/<int:pk>/", views.CoordinateGroupView.as_view(), name="coordinategroup"), path("coordinate-groups/<int:pk>/", views.CoordinateGroupView.as_view(), name="coordinategroup"),
path("coordinate-groups/<int:pk>/edit/", views.CoordinateGroupEditView.as_view(), name="coordinategroup_edit"), path("coordinate-groups/<int:pk>/edit/", views.CoordinateGroupEditView.as_view(), name="coordinategroup_edit"),
path("coordinate-groups/<int:pk>/delete/", views.CoordinateGroupDeleteView.as_view(), name="coordinategroup_delete"), path("coordinate-groups/<int:pk>/delete/", views.CoordinateGroupDeleteView.as_view(), name="coordinategroup_delete"),
path("coordinate-groups/<int:pk>/changelog/", views.CoordinateGroupChangeLogView.as_view(), name="coordinategroup_changelog", kwargs={'model': models.CoordinateGroup}), path("coordinate-groups/<int:pk>/changelog/", ObjectChangeLogView.as_view(), name="coordinategroup_changelog", kwargs={'model': models.CoordinateGroup}),
# Coordinate # Coordinate
path("coordinate/", views.CoordinateListView.as_view(), name="coordinate_list"), path("coordinate/", views.CoordinateListView.as_view(), name="coordinate_list"),
@@ -25,5 +25,5 @@ urlpatterns = (
path("coordinate/<int:pk>/", views.CoordinateView.as_view(), name="coordinate"), path("coordinate/<int:pk>/", views.CoordinateView.as_view(), name="coordinate"),
path("coordinate/<int:pk>/edit/", views.CoordinateEditView.as_view(), name="coordinate_edit"), path("coordinate/<int:pk>/edit/", views.CoordinateEditView.as_view(), name="coordinate_edit"),
path("coordinate/<int:pk>/delete/", views.CoordinateDeleteView.as_view(), name="coordinate_delete"), path("coordinate/<int:pk>/delete/", views.CoordinateDeleteView.as_view(), name="coordinate_delete"),
path("coordinate/<int:pk>/changelog/", views.CoordinateChangeLogView.as_view(), name="coordinate_changelog", kwargs={'model': models.Coordinate}), path("coordinate/<int:pk>/changelog/", ObjectChangeLogView.as_view(), name="coordinate_changelog", kwargs={'model': models.Coordinate}),
) )
+12 -2
View File
@@ -22,7 +22,7 @@ from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.db.models import Q, QuerySet from django.db.models import Q, QuerySet, Count
from django.db.models.functions import Lower from django.db.models.functions import Lower
from django.http import HttpRequest, HttpResponseRedirect, QueryDict from django.http import HttpRequest, HttpResponseRedirect, QueryDict
from django.shortcuts import render, get_object_or_404 from django.shortcuts import render, get_object_or_404
@@ -825,6 +825,14 @@ class CoordinateGroupView(PermissionRequiredMixin, ObjectView):
queryset = CoordinateGroup.objects.all() queryset = CoordinateGroup.objects.all()
def get_extra_context(self, request, instance):
table = CoordinateListTable(instance.coordinate_set.all())
table.configure(request)
return {
'coordinates_table': table,
}
class CoordinateGroupAddView(PermissionRequiredMixin, ObjectEditView): class CoordinateGroupAddView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'netbox_topology_views.add_coordinategroup' permission_required = 'netbox_topology_views.add_coordinategroup'
@@ -835,7 +843,9 @@ class CoordinateGroupAddView(PermissionRequiredMixin, ObjectEditView):
class CoordinateGroupListView(PermissionRequiredMixin, ObjectListView): class CoordinateGroupListView(PermissionRequiredMixin, ObjectListView):
permission_required = 'netbox_topology_views.view_coordinategroup' permission_required = 'netbox_topology_views.view_coordinategroup'
queryset = CoordinateGroup.objects.all() queryset = CoordinateGroup.objects.annotate(
devices = Count('coordinate')
)
table = CoordinateGroupListTable table = CoordinateGroupListTable
template_name = 'netbox_topology_views/coordinategroup_list.html' template_name = 'netbox_topology_views/coordinategroup_list.html'