From 1fcb68f42673db1762dffb55dab5e770c73cacdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sat, 30 Mar 2024 22:12:55 +0100 Subject: [PATCH] remove node name --- src/c3nav/mesh/forms.py | 6 ------ .../migrations/0014_remove_meshnode_name.py | 17 +++++++++++++++ src/c3nav/mesh/models.py | 7 ++++++- .../mesh/templates/mesh/node_detail.html | 3 --- src/c3nav/mesh/urls.py | 3 +-- src/c3nav/mesh/utils.py | 3 ++- src/c3nav/mesh/views/nodes.py | 21 +------------------ 7 files changed, 27 insertions(+), 33 deletions(-) create mode 100644 src/c3nav/mesh/migrations/0014_remove_meshnode_name.py diff --git a/src/c3nav/mesh/forms.py b/src/c3nav/mesh/forms.py index 1a6692bd..3a661d76 100644 --- a/src/c3nav/mesh/forms.py +++ b/src/c3nav/mesh/forms.py @@ -289,12 +289,6 @@ class OTAApplyMessageForm(MeshMessageForm): reboot = forms.BooleanField(required=False, label=_('reboot')) -class MeshNodeForm(forms.ModelForm): - class Meta: - model = MeshNode - fields = ["name"] - - class RangingForm(forms.Form): msg_types = {} diff --git a/src/c3nav/mesh/migrations/0014_remove_meshnode_name.py b/src/c3nav/mesh/migrations/0014_remove_meshnode_name.py new file mode 100644 index 00000000..8b6bfca7 --- /dev/null +++ b/src/c3nav/mesh/migrations/0014_remove_meshnode_name.py @@ -0,0 +1,17 @@ +# Generated by Django 5.0.1 on 2024-03-30 21:11 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('mesh', '0013_meshnode_upstream_alter_nodemessage_message_type'), + ] + + operations = [ + migrations.RemoveField( + model_name='meshnode', + name='name', + ), + ] diff --git a/src/c3nav/mesh/models.py b/src/c3nav/mesh/models.py index 98404fd4..7ce3f9e1 100644 --- a/src/c3nav/mesh/models.py +++ b/src/c3nav/mesh/models.py @@ -256,7 +256,6 @@ class MeshNode(models.Model): code='invalid_macaddress' )]) - name = models.CharField(_('name'), max_length=32, null=True, blank=True) first_seen = models.DateTimeField(_('first seen'), auto_now_add=True) uplink = models.ForeignKey('MeshUplink', models.PROTECT, null=True, related_name='routed_nodes', verbose_name=_('uplink')) @@ -265,6 +264,12 @@ class MeshNode(models.Model): last_signin = models.DateTimeField(_('last signin'), null=True) objects = models.Manager.from_queryset(MeshNodeQuerySet)() + @property + def name(self): + node_message = self.last_messages[MeshMessageType.CONFIG_NODE] + if node_message: + return f"{node_message.parsed.content.number} {node_message.parsed.content.name}".strip() + def __str__(self): if self.name: return '%s (%s)' % (self.address, self.name) diff --git a/src/c3nav/mesh/templates/mesh/node_detail.html b/src/c3nav/mesh/templates/mesh/node_detail.html index adc3b79b..7dbbb886 100644 --- a/src/c3nav/mesh/templates/mesh/node_detail.html +++ b/src/c3nav/mesh/templates/mesh/node_detail.html @@ -45,9 +45,6 @@

- - {% trans 'Edit' %} - {% trans 'View messages' %} diff --git a/src/c3nav/mesh/urls.py b/src/c3nav/mesh/urls.py index 9e6b1e23..85c7f9ac 100644 --- a/src/c3nav/mesh/urls.py +++ b/src/c3nav/mesh/urls.py @@ -5,7 +5,7 @@ from c3nav.mesh.views.firmware import (FirmwareBuildDetailView, FirmwareDetailVi FirmwaresListView, OTADetailView, OTAListView) from c3nav.mesh.views.messages import MeshMessageListView, MeshMessageSendingView, MeshMessageSendView from c3nav.mesh.views.misc import MeshLogView, MeshRangingView -from c3nav.mesh.views.nodes import NodeDetailView, NodeEditView, NodeListView +from c3nav.mesh.views.nodes import NodeDetailView, NodeListView urlpatterns = [ path('', NodeListView.as_view(), name='mesh.nodes'), @@ -19,7 +19,6 @@ urlpatterns = [ path('ota/all/', OTAListView.as_view(all=True), name='mesh.ota.list.all'), path('ota//', OTADetailView.as_view(), name='mesh.ota.detail'), path('nodes//', NodeDetailView.as_view(), name='mesh.node.detail'), - path('nodes//edit/', NodeEditView.as_view(), name='mesh.node.edit'), path('message/sending//', MeshMessageSendingView.as_view(), name='mesh.sending'), path('message///', MeshMessageSendView.as_view(), name='mesh.send'), path('message//', MeshMessageSendView.as_view(), name='mesh.send'), diff --git a/src/c3nav/mesh/utils.py b/src/c3nav/mesh/utils.py index b2e18b28..e7040105 100644 --- a/src/c3nav/mesh/utils.py +++ b/src/c3nav/mesh/utils.py @@ -17,8 +17,9 @@ def indent_c(code): def get_node_names(): from c3nav.mesh.models import MeshNode + from c3nav.mesh.messages import MeshMessageType return { - **{node.address: node.name for node in MeshNode.objects.all()}, + **{node.address: node.name for node in MeshNode.objects.prefetch_last_messages(MeshMessageType.CONFIG_NODE)}, 'ff:ff:ff:ff:ff:ff': "broadcast", '00:00:00:ff:ff:ff': "direct parent", '00:00:00:00:00:00': "root", diff --git a/src/c3nav/mesh/views/nodes.py b/src/c3nav/mesh/views/nodes.py index b4be562f..8d3be645 100644 --- a/src/c3nav/mesh/views/nodes.py +++ b/src/c3nav/mesh/views/nodes.py @@ -1,9 +1,5 @@ -from django.contrib.messages.views import SuccessMessageMixin -from django.urls import reverse -from django.utils.translation import gettext_lazy as _ -from django.views.generic import DetailView, ListView, UpdateView +from django.views.generic import DetailView, ListView -from c3nav.mesh.forms import MeshNodeForm from c3nav.mesh.models import MeshNode from c3nav.mesh.views.base import MeshControlMixin @@ -28,18 +24,3 @@ class NodeDetailView(MeshControlMixin, DetailView): def get_queryset(self): return super().get_queryset().prefetch_last_messages().prefetch_firmwares().select_related("upstream") - -class NodeEditView(MeshControlMixin, SuccessMessageMixin, UpdateView): - model = MeshNode - form_class = MeshNodeForm - template_name = "control/form.html" - success_message = _('Name updated successfully') - - def get_context_data(self, **kwargs): - return { - **super().get_context_data(), - 'title': _('Editing mesh node: %s') % self.get_object(), - } - - def get_success_url(self): - return reverse('mesh.node.detail', kwargs={'pk': self.get_object().pk})