From 48fbf2ca66ee5e9e9738c060d685799361d5e86f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laura=20Kl=C3=BCnder?=
Date: Mon, 2 Oct 2023 15:35:08 +0200
Subject: [PATCH] mesh overview in control panel
---
src/c3nav/control/templates/control/base.html | 1 +
.../control/templates/control/mesh_nodes.html | 29 +++++++++++++++++++
src/c3nav/control/urls.py | 3 +-
src/c3nav/control/views.py | 16 ++++++++++
4 files changed, 48 insertions(+), 1 deletion(-)
create mode 100644 src/c3nav/control/templates/control/mesh_nodes.html
diff --git a/src/c3nav/control/templates/control/base.html b/src/c3nav/control/templates/control/base.html
index d6214995..207aa46c 100644
--- a/src/c3nav/control/templates/control/base.html
+++ b/src/c3nav/control/templates/control/base.html
@@ -24,6 +24,7 @@
{% if request.user_permissions.manage_map_updates %}
{% trans 'Map Updates' %} ·
{% endif %}
+ {% trans 'Mesh' %} ·
{{ request.user.username }}
diff --git a/src/c3nav/control/templates/control/mesh_nodes.html b/src/c3nav/control/templates/control/mesh_nodes.html
new file mode 100644
index 00000000..5fd7bb63
--- /dev/null
+++ b/src/c3nav/control/templates/control/mesh_nodes.html
@@ -0,0 +1,29 @@
+{% extends 'control/base.html' %}
+{% load i18n %}
+
+{% block heading %}{% trans 'Mesh' %}{% endblock %}
+
+{% block subcontent %}
+ {% include 'control/fragment_pagination.html' with objects=nodes %}
+
+
+
+ {% trans 'Address' %} |
+ {% trans 'Name' %} |
+ {% trans 'Last seen' %} |
+ {% trans 'Parent' %} |
+ {% trans 'Route' %} |
+
+ {% for node in nodes %}
+
+ {{ node.address }} |
+ {{ node.name }} |
+ {{ node.last_seen }} |
+ {{ node.parent }} |
+ {{ node.route }} |
+
+ {% endfor %}
+
+
+ {% include 'control/fragment_pagination.html' with objects=nodes %}
+{% endblock %}
diff --git a/src/c3nav/control/urls.py b/src/c3nav/control/urls.py
index 28ae4a1f..da678d21 100644
--- a/src/c3nav/control/urls.py
+++ b/src/c3nav/control/urls.py
@@ -1,7 +1,7 @@
from django.urls import path
from c3nav.control.views import (announcement_detail, announcement_list, grant_access, grant_access_qr, main_index,
- map_updates, user_detail, user_list)
+ map_updates, user_detail, user_list, mesh_node_list)
urlpatterns = [
path('users/', user_list, name='control.users'),
@@ -11,5 +11,6 @@ urlpatterns = [
path('announcements/', announcement_list, name='control.announcements'),
path('announcements//', announcement_detail, name='control.announcements.detail'),
path('mapupdates/', map_updates, name='control.map_updates'),
+ path('mesh/', mesh_node_list, name='control.mesh_nodes'),
path('', main_index, name='control.index'),
]
diff --git a/src/c3nav/control/views.py b/src/c3nav/control/views.py
index 1c939f0d..d459ee5d 100644
--- a/src/c3nav/control/views.py
+++ b/src/c3nav/control/views.py
@@ -25,6 +25,7 @@ from c3nav.control.models import UserPermissions, UserSpaceAccess
from c3nav.mapdata.models import MapUpdate
from c3nav.mapdata.models.access import AccessPermission, AccessPermissionToken, AccessRestriction
from c3nav.mapdata.tasks import process_map_updates
+from c3nav.mesh.models import MeshNode
from c3nav.site.models import Announcement
@@ -407,3 +408,18 @@ def map_updates(request):
'filter_form': filter_form,
'updates': users,
})
+
+
+@login_required(login_url='site.login')
+@control_panel_view
+def mesh_node_list(request):
+ page = request.GET.get('page', 1)
+
+ queryset = MeshNode.objects.order_by('address')
+
+ paginator = Paginator(queryset, 20)
+ nodes = paginator.page(page)
+
+ return render(request, 'control/mesh_nodes.html', {
+ 'nodes': nodes,
+ })
\ No newline at end of file