From f3db914e9dc6572885b6489b6a08b1d02b045d99 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 25 Jan 2017 14:34:34 -0500 Subject: [PATCH] Fixes #844: Apply order_naturally() to API interfaces list --- netbox/dcim/api/views.py | 8 ++++---- netbox/dcim/views.py | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 70ca17bbc..e76ec82ad 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -6,7 +6,6 @@ from rest_framework.views import APIView from django.conf import settings from django.contrib.contenttypes.models import ContentType -from django.db.models import Count from django.http import Http404 from django.shortcuts import get_object_or_404 @@ -332,7 +331,8 @@ class InterfaceListView(generics.ListAPIView): def get_queryset(self): device = get_object_or_404(Device, pk=self.kwargs['pk']) - queryset = Interface.objects.filter(device=device).select_related('connected_as_a', 'connected_as_b') + queryset = Interface.objects.order_naturally(device.device_type.interface_ordering).filter(device=device)\ + .select_related('connected_as_a', 'connected_as_b', 'circuit_termination') # Filter by type (physical or virtual) iface_type = self.request.query_params.get('type') @@ -490,8 +490,8 @@ class RelatedConnectionsView(APIView): response['power-ports'].append(data) # Interface connections - interfaces = Interface.objects.filter(device=device).select_related('connected_as_a', 'connected_as_b', - 'circuit_termination') + interfaces = Interface.objects.order_naturally(device.device_type.interface_ordering).filter(device=device)\ + .select_related('connected_as_a', 'connected_as_b', 'circuit_termination') for iface in interfaces: data = serializers.InterfaceDetailSerializer(instance=iface).data del(data['device']) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index b98252747..96c8e167e 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -749,7 +749,8 @@ def device_inventory(request, pk): def device_lldp_neighbors(request, pk): device = get_object_or_404(Device, pk=pk) - interfaces = Interface.objects.filter(device=device).select_related('connected_as_a', 'connected_as_b') + interfaces = Interface.objects.order_naturally(device.device_type.interface_ordering).filter(device=device)\ + .select_related('connected_as_a', 'connected_as_b') return render(request, 'dcim/device_lldp_neighbors.html', { 'device': device,