From 8b1d2b56f3e17fd941d845b5112fad1c7d64faf6 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 30 May 2023 15:05:22 +0200 Subject: [PATCH] Add save_coords to individual options (#311) --- netbox_topology_views/api/serializers.py | 3 +-- netbox_topology_views/forms.py | 15 ++++++++++++--- .../0005_individualoptions_save_coords.py | 18 ++++++++++++++++++ netbox_topology_views/models.py | 3 +++ netbox_topology_views/views.py | 2 ++ 5 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 netbox_topology_views/migrations/0005_individualoptions_save_coords.py diff --git a/netbox_topology_views/api/serializers.py b/netbox_topology_views/api/serializers.py index c864ee0..9eb1625 100644 --- a/netbox_topology_views/api/serializers.py +++ b/netbox_topology_views/api/serializers.py @@ -35,5 +35,4 @@ class CoordinateSerializer(NetBoxModelSerializer): class IndividualOptionsSerializer(NetBoxModelSerializer): class Meta: model = IndividualOptions - fields = ("ignore_cable_type", "show_unconnected", "show_cables", "show_logical_connections", "show_single_cable_logical_conns", "show_neighbors", "show_circuit", "show_power", "show_wireless", "draw_default_layout") - \ No newline at end of file + fields = ("ignore_cable_type", "save_coords", "show_unconnected", "show_cables", "show_logical_connections", "show_single_cable_logical_conns", "show_neighbors", "show_circuit", "show_power", "show_wireless", "draw_default_layout") diff --git a/netbox_topology_views/forms.py b/netbox_topology_views/forms.py index fd147ed..26064f0 100644 --- a/netbox_topology_views/forms.py +++ b/netbox_topology_views/forms.py @@ -211,6 +211,7 @@ class IndividualOptionsForm(NetBoxModelForm): "ignore_cable_type", "preselected_device_roles", "preselected_tags", + "save_coords", "show_unconnected", "show_cables", "show_logical_connections", @@ -248,6 +249,15 @@ class IndividualOptionsForm(NetBoxModelForm): help_text=_("Select Tags that you want to have " "preselected in the filter tab.") ) + save_coords = forms.BooleanField( + label=_("Save Coordinates"), + required=False, + initial=False, + help_text=_("Coordinates of nodes will be saved if dragged to a different " + "position. This option depends on parameters set in the config file. " + "It has no effect if 'allow_coordinates_saving' has not been set or " + " 'always_save_coordinates' has been set.") + ) show_unconnected = forms.BooleanField( label=_("Show Unconnected"), required=False, @@ -322,6 +332,5 @@ class IndividualOptionsForm(NetBoxModelForm): class Meta: model = IndividualOptions fields = [ - 'user_id', 'ignore_cable_type', 'preselected_device_roles', 'preselected_tags', 'show_unconnected', 'show_cables', 'show_logical_connections', 'show_single_cable_logical_conns', 'show_neighbors', 'show_circuit', 'show_power', 'show_wireless', 'draw_default_layout' - ] - + 'user_id', 'ignore_cable_type', 'preselected_device_roles', 'preselected_tags', 'save_coords', 'show_unconnected', 'show_cables', 'show_logical_connections', 'show_single_cable_logical_conns', 'show_neighbors', 'show_circuit', 'show_power', 'show_wireless', 'draw_default_layout' + ] diff --git a/netbox_topology_views/migrations/0005_individualoptions_save_coords.py b/netbox_topology_views/migrations/0005_individualoptions_save_coords.py new file mode 100644 index 0000000..c2cfe58 --- /dev/null +++ b/netbox_topology_views/migrations/0005_individualoptions_save_coords.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.8 on 2023-05-23 20:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('netbox_topology_views', '0004_coordinategroup_coordinate'), + ] + + operations = [ + migrations.AddField( + model_name='individualoptions', + name='save_coords', + field=models.BooleanField(default=False), + ), + ] diff --git a/netbox_topology_views/models.py b/netbox_topology_views/models.py index 4844650..85ecfea 100644 --- a/netbox_topology_views/models.py +++ b/netbox_topology_views/models.py @@ -199,6 +199,9 @@ class IndividualOptions(NetBoxModel): blank=True, db_table='netbox_topology_views_individualoptions_preselected_tag', ) + save_coords = models.BooleanField( + default=False + ) show_unconnected = models.BooleanField( default=False ) diff --git a/netbox_topology_views/views.py b/netbox_topology_views/views.py index 88845ef..7e76d37 100644 --- a/netbox_topology_views/views.py +++ b/netbox_topology_views/views.py @@ -697,6 +697,7 @@ class TopologyHomeView(PermissionRequiredMixin, View): q.setlist("device_role_id", list(preselected_device_roles)) q.setlist("tag", list(preselected_tags)) + if individualOptions.save_coords: q['save_coords'] = "on" if individualOptions.show_unconnected: q['show_unconnected'] = "on" if individualOptions.show_cables: q['show_cables'] = "on" if individualOptions.show_logical_connections: q['show_logical_connections'] = "on" @@ -912,6 +913,7 @@ class TopologyIndividualOptionsView(PermissionRequiredMixin, View): 'ignore_cable_type': tuple(queryset.ignore_cable_type.translate({ord(i): None for i in '[]\''}).split(', ')), 'preselected_device_roles': IndividualOptions.objects.get(id=queryset.id).preselected_device_roles.all(), 'preselected_tags': IndividualOptions.objects.get(id=queryset.id).preselected_tags.all(), + 'save_coords': queryset.save_coords, 'show_unconnected': queryset.show_unconnected, 'show_cables': queryset.show_cables, 'show_logical_connections': queryset.show_logical_connections,