1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Updated RackViewSet() to be compatible with paginated API

This commit is contained in:
Jeremy Stretch
2017-03-20 10:38:09 -04:00
parent 36bbcc8559
commit 1f78462f58
2 changed files with 26 additions and 17 deletions

View File

@@ -175,6 +175,28 @@ class WritableRackSerializer(serializers.ModelSerializer):
return data
#
# Rack units
#
class NestedDeviceSerializer(serializers.ModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:device-detail')
class Meta:
model = Device
fields = ['id', 'url', 'name', 'display_name']
class RackUnitSerializer(serializers.Serializer):
"""
A rack unit is an abstraction formed by the set (rack, position, face); it does not exist as a row in the database.
"""
id = serializers.IntegerField(read_only=True)
name = serializers.CharField(read_only=True)
face = serializers.IntegerField(read_only=True)
device = NestedDeviceSerializer(read_only=True)
#
# Rack reservations
#
@@ -454,14 +476,6 @@ class DeviceSerializer(CustomFieldModelSerializer):
}
class NestedDeviceSerializer(serializers.ModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:device-detail')
class Meta:
model = Device
fields = ['id', 'url', 'name', 'display_name']
class WritableDeviceSerializer(serializers.ModelSerializer):
class Meta:

View File

@@ -96,15 +96,10 @@ class RackViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
exclude_pk = None
elevation = rack.get_rack_units(face, exclude_pk)
# Serialize Devices within the rack elevation
for u in elevation:
if u['device']:
u['device'] = serializers.NestedDeviceSerializer(
instance=u['device'],
context={'request': request},
).data
return Response(elevation)
page = self.paginate_queryset(elevation)
if page is not None:
rack_units = serializers.RackUnitSerializer(page, many=True, context={'request': request})
return self.get_paginated_response(rack_units.data)
#