mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 17:38:37 -06:00
Optimized API views
This commit is contained in:
parent
cb1bdccf51
commit
427226de8c
@ -785,10 +785,18 @@ class NestedRearPortSerializer(WritableNestedSerializer):
|
|||||||
# Front ports
|
# Front ports
|
||||||
#
|
#
|
||||||
|
|
||||||
|
class FrontPortRearPortSerializer(WritableNestedSerializer):
|
||||||
|
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearport-detail')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = RearPort
|
||||||
|
fields = ['id', 'url', 'name']
|
||||||
|
|
||||||
|
|
||||||
class FrontPortSerializer(ValidatedModelSerializer):
|
class FrontPortSerializer(ValidatedModelSerializer):
|
||||||
device = NestedDeviceSerializer()
|
device = NestedDeviceSerializer()
|
||||||
type = ChoiceField(choices=PORT_TYPE_CHOICES)
|
type = ChoiceField(choices=PORT_TYPE_CHOICES)
|
||||||
rear_port = NestedRearPortSerializer()
|
rear_port = FrontPortRearPortSerializer()
|
||||||
cable = NestedCableSerializer(read_only=True)
|
cable = NestedCableSerializer(read_only=True)
|
||||||
tags = TagListSerializerField(required=False)
|
tags = TagListSerializerField(required=False)
|
||||||
|
|
||||||
@ -821,7 +829,7 @@ class DeviceBaySerializer(TaggitSerializer, ValidatedModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class NestedDeviceBaySerializer(WritableNestedSerializer):
|
class NestedDeviceBaySerializer(WritableNestedSerializer):
|
||||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicebay-detail')
|
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearport-detail')
|
||||||
device = NestedDeviceSerializer(read_only=True)
|
device = NestedDeviceSerializer(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -330,31 +330,51 @@ class DeviceViewSet(CustomFieldModelViewSet):
|
|||||||
#
|
#
|
||||||
|
|
||||||
class ConsolePortViewSet(ModelViewSet):
|
class ConsolePortViewSet(ModelViewSet):
|
||||||
queryset = ConsolePort.objects.select_related('device', 'connected_endpoint__device').prefetch_related('tags')
|
queryset = ConsolePort.objects.select_related(
|
||||||
|
'device', 'connected_endpoint__device', 'cable'
|
||||||
|
).prefetch_related(
|
||||||
|
'tags'
|
||||||
|
)
|
||||||
serializer_class = serializers.ConsolePortSerializer
|
serializer_class = serializers.ConsolePortSerializer
|
||||||
filter_class = filters.ConsolePortFilter
|
filter_class = filters.ConsolePortFilter
|
||||||
|
|
||||||
|
|
||||||
class ConsoleServerPortViewSet(ModelViewSet):
|
class ConsoleServerPortViewSet(ModelViewSet):
|
||||||
queryset = ConsoleServerPort.objects.select_related('device', 'connected_endpoint__device').prefetch_related('tags')
|
queryset = ConsoleServerPort.objects.select_related(
|
||||||
|
'device', 'connected_endpoint__device', 'cable'
|
||||||
|
).prefetch_related(
|
||||||
|
'tags'
|
||||||
|
)
|
||||||
serializer_class = serializers.ConsoleServerPortSerializer
|
serializer_class = serializers.ConsoleServerPortSerializer
|
||||||
filter_class = filters.ConsoleServerPortFilter
|
filter_class = filters.ConsoleServerPortFilter
|
||||||
|
|
||||||
|
|
||||||
class PowerPortViewSet(ModelViewSet):
|
class PowerPortViewSet(ModelViewSet):
|
||||||
queryset = PowerPort.objects.select_related('device', 'connected_endpoint__device').prefetch_related('tags')
|
queryset = PowerPort.objects.select_related(
|
||||||
|
'device', 'connected_endpoint__device', 'cable'
|
||||||
|
).prefetch_related(
|
||||||
|
'tags'
|
||||||
|
)
|
||||||
serializer_class = serializers.PowerPortSerializer
|
serializer_class = serializers.PowerPortSerializer
|
||||||
filter_class = filters.PowerPortFilter
|
filter_class = filters.PowerPortFilter
|
||||||
|
|
||||||
|
|
||||||
class PowerOutletViewSet(ModelViewSet):
|
class PowerOutletViewSet(ModelViewSet):
|
||||||
queryset = PowerOutlet.objects.select_related('device', 'connected_endpoint__device').prefetch_related('tags')
|
queryset = PowerOutlet.objects.select_related(
|
||||||
|
'device', 'connected_endpoint__device', 'cable'
|
||||||
|
).prefetch_related(
|
||||||
|
'tags'
|
||||||
|
)
|
||||||
serializer_class = serializers.PowerOutletSerializer
|
serializer_class = serializers.PowerOutletSerializer
|
||||||
filter_class = filters.PowerOutletFilter
|
filter_class = filters.PowerOutletFilter
|
||||||
|
|
||||||
|
|
||||||
class InterfaceViewSet(ModelViewSet):
|
class InterfaceViewSet(ModelViewSet):
|
||||||
queryset = Interface.objects.select_related('device').prefetch_related('tags')
|
queryset = Interface.objects.select_related(
|
||||||
|
'device', 'connected_endpoint__device', 'cable'
|
||||||
|
).prefetch_related(
|
||||||
|
'tags'
|
||||||
|
)
|
||||||
serializer_class = serializers.InterfaceSerializer
|
serializer_class = serializers.InterfaceSerializer
|
||||||
filter_class = filters.InterfaceFilter
|
filter_class = filters.InterfaceFilter
|
||||||
|
|
||||||
@ -370,13 +390,21 @@ class InterfaceViewSet(ModelViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class FrontPortViewSet(ModelViewSet):
|
class FrontPortViewSet(ModelViewSet):
|
||||||
queryset = FrontPort.objects.select_related('device__device_type__manufacturer', 'rear_port')
|
queryset = FrontPort.objects.select_related(
|
||||||
|
'device__device_type__manufacturer', 'rear_port', 'cable'
|
||||||
|
).prefetch_related(
|
||||||
|
'tags'
|
||||||
|
)
|
||||||
serializer_class = serializers.FrontPortSerializer
|
serializer_class = serializers.FrontPortSerializer
|
||||||
filter_class = filters.FrontPortFilter
|
filter_class = filters.FrontPortFilter
|
||||||
|
|
||||||
|
|
||||||
class RearPortViewSet(ModelViewSet):
|
class RearPortViewSet(ModelViewSet):
|
||||||
queryset = RearPort.objects.select_related('device__device_type__manufacturer')
|
queryset = RearPort.objects.select_related(
|
||||||
|
'device__device_type__manufacturer', 'cable'
|
||||||
|
).prefetch_related(
|
||||||
|
'tags'
|
||||||
|
)
|
||||||
serializer_class = serializers.RearPortSerializer
|
serializer_class = serializers.RearPortSerializer
|
||||||
filter_class = filters.RearPortFilter
|
filter_class = filters.RearPortFilter
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user