diff --git a/src/c3nav/control/templates/control/mesh_firmwares.html b/src/c3nav/control/templates/control/mesh_firmwares.html new file mode 100644 index 00000000..c92dc262 --- /dev/null +++ b/src/c3nav/control/templates/control/mesh_firmwares.html @@ -0,0 +1,38 @@ +{% extends 'control/base.html' %} +{% load i18n %} + +{% block heading %}{% trans 'Mesh Firmwares' %}{% endblock %} + +{% block subcontent %} +

Firmwares

+ + {% include 'control/fragment_pagination.html' %} + + + + + + + + + + + {% for firmware in firmwares %} + + + + + + + + + {% endfor %} + +
{% trans 'Created' %}{% trans 'Uploader' %}{% trans 'Project Name' %}{% trans 'Version' %}{% trans 'IDF version' %}{% trans 'Builds' %}
{{ firmware.created }}{{ firmware.uploader }}{{ firmware.project_name }}{{ firmware.version }}{{ firmware.idf_version }} + {% for build in firmware.builds.all %} + {{ build.variant }} ({{ build.get_chip_display }})
+ {% endfor %} +
+ + {% include 'control/fragment_pagination.html' %} +{% endblock %} diff --git a/src/c3nav/control/templates/control/mesh_nodes.html b/src/c3nav/control/templates/control/mesh_nodes.html index dac665f9..b5d8e46a 100644 --- a/src/c3nav/control/templates/control/mesh_nodes.html +++ b/src/c3nav/control/templates/control/mesh_nodes.html @@ -11,6 +11,12 @@ {% trans 'View received messages' %} +
+

View firmwares

+ + {% trans 'View firmwares' %} + +

Send messages

diff --git a/src/c3nav/control/urls.py b/src/c3nav/control/urls.py index af535c15..b140b567 100644 --- a/src/c3nav/control/urls.py +++ b/src/c3nav/control/urls.py @@ -4,8 +4,8 @@ from c3nav.control.views.access import grant_access, grant_access_qr from c3nav.control.views.announcements import announcement_detail, announcement_list from c3nav.control.views.base import ControlPanelIndexView from c3nav.control.views.mapupdates import map_updates -from c3nav.control.views.mesh import (MeshLogView, MeshMessageListView, MeshMessageSendingView, MeshMessageSendView, - MeshNodeDetailView, MeshNodeEditView, MeshNodeListView) +from c3nav.control.views.mesh import (MeshFirmwaresListView, MeshLogView, MeshMessageListView, MeshMessageSendingView, + MeshMessageSendView, MeshNodeDetailView, MeshNodeEditView, MeshNodeListView) from c3nav.control.views.users import UserListView, user_detail urlpatterns = [ @@ -19,6 +19,7 @@ urlpatterns = [ path('mesh/', MeshNodeListView.as_view(), name='control.mesh.nodes'), path('mesh/logs/', MeshLogView.as_view(), name='control.mesh.log'), path('mesh/messages/', MeshMessageListView.as_view(), name='control.mesh.messages'), + path('mesh/firmwares/', MeshFirmwaresListView.as_view(), name='control.mesh.firmwares'), path('mesh//', MeshNodeDetailView.as_view(), name='control.mesh.node.detail'), path('mesh//edit/', MeshNodeEditView.as_view(), name='control.mesh.node.edit'), path('mesh/message/sending//', MeshMessageSendingView.as_view(), name='control.mesh.sending'), diff --git a/src/c3nav/control/views/mesh.py b/src/c3nav/control/views/mesh.py index babdeb31..2c3648cc 100644 --- a/src/c3nav/control/views/mesh.py +++ b/src/c3nav/control/views/mesh.py @@ -14,7 +14,7 @@ from c3nav.control.forms import MeshMessageFilterForm from c3nav.control.views.base import ControlPanelMixin from c3nav.mesh.forms import MeshMessageForm, MeshNodeForm from c3nav.mesh.messages import MeshMessage, MeshMessageType -from c3nav.mesh.models import MeshNode, NodeMessage +from c3nav.mesh.models import FirmwareVersion, MeshNode, NodeMessage from c3nav.mesh.utils import get_node_names, group_msg_type_choices @@ -187,3 +187,11 @@ class MeshLogView(ControlPanelMixin, TemplateView): **super().get_context_data(), "node_names": get_node_names(), } + + +class MeshFirmwaresListView(ControlPanelMixin, ListView): + model = FirmwareVersion + template_name = "control/mesh_firmwares.html" + ordering = "-created" + context_object_name = "firmwares" + paginate_by = 20