From bb17d7a908ada90c7dfc98660eb0350711aad6e2 Mon Sep 17 00:00:00 2001 From: Julio-Oliveira-Encora Date: Mon, 10 Jun 2024 08:37:31 -0300 Subject: [PATCH] Created GetInterfaceSerializer with device not nested. Added get_serializer_class for InterfaceViewSet. --- netbox/dcim/api/serializers_/device_components.py | 7 ++++++- netbox/dcim/api/views.py | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/netbox/dcim/api/serializers_/device_components.py b/netbox/dcim/api/serializers_/device_components.py index b94c13270..f6f007d5f 100644 --- a/netbox/dcim/api/serializers_/device_components.py +++ b/netbox/dcim/api/serializers_/device_components.py @@ -32,6 +32,7 @@ __all__ = ( 'DeviceBaySerializer', 'FrontPortSerializer', 'InterfaceSerializer', + 'GetInterfaceSerializer', 'InventoryItemSerializer', 'ModuleBaySerializer', 'PowerOutletSerializer', @@ -169,7 +170,7 @@ class PowerOutletSerializer(NetBoxModelSerializer, CabledObjectSerializer, Conne class InterfaceSerializer(NetBoxModelSerializer, CabledObjectSerializer, ConnectedEndpointsSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:interface-detail') - device = DeviceSerializer(nested=False) + device = DeviceSerializer(nested=True) vdcs = SerializedPKRelatedField( queryset=VirtualDeviceContext.objects.all(), serializer=VirtualDeviceContextSerializer, @@ -249,6 +250,10 @@ class InterfaceSerializer(NetBoxModelSerializer, CabledObjectSerializer, Connect return super().validate(data) +class GetInterfaceSerializer(InterfaceSerializer): + device = DeviceSerializer(nested=False) + + class RearPortSerializer(NetBoxModelSerializer, CabledObjectSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearport-detail') device = DeviceSerializer(nested=True) diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index d6ddd466b..676a39ef2 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -440,6 +440,11 @@ class InterfaceViewSet(PathEndpointMixin, NetBoxModelViewSet): serializer_class = serializers.InterfaceSerializer filterset_class = filtersets.InterfaceFilterSet + def get_serializer_class(self): + if self.request.method == 'GET': + return serializers.GetInterfaceSerializer + return self.serializer_class + def get_bulk_destroy_queryset(self): # Ensure child interfaces are deleted prior to their parents return self.get_queryset().order_by('device', 'parent', CollateAsChar('_name'))