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 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 # 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 WritableDeviceSerializer(serializers.ModelSerializer):
class Meta: class Meta:

View File

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