From 71812d1bd54c3710db346a6d0adbc27e9a650fd8 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 29 Jun 2020 14:41:43 -0400 Subject: [PATCH] Fix evaluation of RestrictedQuerySet --- netbox/dcim/api/views.py | 12 ++++++++---- netbox/dcim/models/__init__.py | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 2a3619a2f..8b88baa93 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -43,7 +43,7 @@ class CableTraceMixin(object): """ Trace a complete cable path and return each segment as a three-tuple of (termination, cable, termination). """ - obj = get_object_or_404(self.queryset.model, pk=pk) + obj = get_object_or_404(self.queryset, pk=pk) # Initialize the path array path = [] @@ -156,7 +156,7 @@ class RackViewSet(CustomFieldModelViewSet): """ Rack elevation representing the list of rack units. Also supports rendering the elevation as an SVG. """ - rack = get_object_or_404(Rack, pk=pk) + rack = get_object_or_404(self.queryset, pk=pk) serializer = serializers.RackElevationDetailFilterSerializer(data=request.GET) if not serializer.is_valid(): return Response(serializer.errors, 400) @@ -369,7 +369,7 @@ class DeviceViewSet(CustomFieldModelViewSet): """ Execute a NAPALM method on a Device """ - device = get_object_or_404(Device, pk=pk) + device = get_object_or_404(self.queryset, pk=pk) if not device.primary_ip: raise ServiceUnavailable("This device does not have a primary IP address configured.") if device.platform is None: @@ -655,7 +655,11 @@ class ConnectedDeviceViewSet(ViewSet): raise MissingFilterException(detail='Request must include "peer_device" and "peer_interface" filters.') # Determine local interface from peer interface's connection - peer_interface = get_object_or_404(Interface, device__name=peer_device_name, name=peer_interface_name) + peer_interface = get_object_or_404( + Interface.objects.unrestricted(), + device__name=peer_device_name, + name=peer_interface_name + ) local_interface = peer_interface._connected_interface if local_interface is None: diff --git a/netbox/dcim/models/__init__.py b/netbox/dcim/models/__init__.py index 13e80c60a..1a90e01bc 100644 --- a/netbox/dcim/models/__init__.py +++ b/netbox/dcim/models/__init__.py @@ -673,7 +673,7 @@ class Rack(ChangeLoggedModel, CustomFieldModel): # Add devices to rack units list if self.pk: - queryset = Device.objects.prefetch_related( + queryset = Device.objects.unrestricted().prefetch_related( 'device_type', 'device_type__manufacturer', 'device_role'