From d478c92fc80ef66782a21869cbd7126d3115a859 Mon Sep 17 00:00:00 2001 From: dreng Date: Sun, 7 May 2023 09:01:14 +0200 Subject: [PATCH] Housekeeping --- netbox_topology_views/api/views.py | 4 +++- netbox_topology_views/filters.py | 5 ++--- netbox_topology_views/forms.py | 12 ++++++++---- netbox_topology_views/tables.py | 2 +- .../templates/netbox_topology_views/index.html | 1 - netbox_topology_views/views.py | 3 ++- 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/netbox_topology_views/api/views.py b/netbox_topology_views/api/views.py index 6ba2585..131c936 100644 --- a/netbox_topology_views/api/views.py +++ b/netbox_topology_views/api/views.py @@ -19,7 +19,9 @@ from netbox_topology_views.views import get_topology_data from netbox_topology_views.utils import get_image_from_url, export_data_to_xml, get_query_settings from netbox_topology_views.filters import DeviceFilterSet -class SaveCoordsViewSet(ReadOnlyModelViewSet): +class SaveCoordsViewSet(PermissionRequiredMixin, ReadOnlyModelViewSet): + permission_required = 'netbox_topology_views.change_coordinate' + queryset = Device.objects.none() serializer_class = TopologyDummySerializer diff --git a/netbox_topology_views/filters.py b/netbox_topology_views/filters.py index e2467a5..073fff6 100644 --- a/netbox_topology_views/filters.py +++ b/netbox_topology_views/filters.py @@ -1,12 +1,11 @@ import django_filters from dcim.choices import DeviceStatusChoices from dcim.models import Device, DeviceRole, Location, Rack, Region, Site -from .models import Coordinate, CoordinateGroup from django.db.models import Q from netbox.filtersets import NetBoxModelFilterSet from tenancy.filtersets import TenancyFilterSet from utilities.filters import TreeNodeMultipleChoiceFilter - +from netbox_topology_views.models import CoordinateGroup, Coordinate class DeviceFilterSet(TenancyFilterSet, NetBoxModelFilterSet): q = django_filters.CharFilter( @@ -75,4 +74,4 @@ class CoordinatesFilterSet(NetBoxModelFilterSet): return queryset.filter( Q(group__name__icontains=value) | Q(device__name__icontains=value) - ) \ No newline at end of file + ) diff --git a/netbox_topology_views/forms.py b/netbox_topology_views/forms.py index c347fae..472357a 100644 --- a/netbox_topology_views/forms.py +++ b/netbox_topology_views/forms.py @@ -15,13 +15,11 @@ from django.conf import settings from netbox.forms import NetBoxModelFilterSetForm, NetBoxModelForm from utilities.forms.fields import ( TagFilterField, - DynamicModelChoiceField, DynamicModelMultipleChoiceField, MultipleChoiceField ) - -from .models import IndividualOptions, CoordinateGroup, Coordinate +from netbox_topology_views.models import IndividualOptions, CoordinateGroup, Coordinate class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): model = Device @@ -31,6 +29,11 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): ( "q", "filter_id", + ), + ), + ( + None, + ( "group", "save_coords", "show_unconnected", @@ -63,7 +66,8 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): ) group = forms.ModelChoiceField( queryset=CoordinateGroup.objects.all(), - required=False + required=False, + label=_("Coordinate group"), ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, label=_("Region") diff --git a/netbox_topology_views/tables.py b/netbox_topology_views/tables.py index 35e4c3a..53d4f0e 100644 --- a/netbox_topology_views/tables.py +++ b/netbox_topology_views/tables.py @@ -1,7 +1,7 @@ import django_tables2 as tables from netbox.tables import NetBoxTable, ChoiceFieldColumn -from .models import CoordinateGroup, Coordinate +from netbox_topology_views.models import CoordinateGroup, Coordinate class CoordinateGroupListTable(NetBoxTable): name = tables.Column( diff --git a/netbox_topology_views/templates/netbox_topology_views/index.html b/netbox_topology_views/templates/netbox_topology_views/index.html index a24ad58..4bb1186 100644 --- a/netbox_topology_views/templates/netbox_topology_views/index.html +++ b/netbox_topology_views/templates/netbox_topology_views/index.html @@ -55,7 +55,6 @@ {# Applied filters #} {% if filter_form %} {% applied_filters model filter_form request.GET %} -
{% endif %}
diff --git a/netbox_topology_views/views.py b/netbox_topology_views/views.py index ffe5383..46fe614 100644 --- a/netbox_topology_views/views.py +++ b/netbox_topology_views/views.py @@ -159,6 +159,7 @@ def create_node( if group_id is None or group_id == "default": group_id = Coordinate.get_or_create_default_group(group_id) if not group_id: + print('Exception occured while handling default group. Setting node to 0;0.') node["x"] = 0 node["y"] = 0 return node @@ -855,7 +856,7 @@ class CoordinateGroupChangeLogView(PermissionRequiredMixin, ObjectChangeLogView) queryset = CoordinateGroup.objects.all() class TopologyIndividualOptionsView(PermissionRequiredMixin, View): - permission_required = 'netbox_topology_views.change_individualoption' + permission_required = 'netbox_topology_views.change_individualoptions' def post(self, request): instance = IndividualOptions.objects.get(user_id=request.user.id)