12826 add api/serializers

This commit is contained in:
Arthur Hanson 2024-06-25 10:23:07 -07:00
parent c8a5197b2c
commit fc1ce31b00
4 changed files with 37 additions and 0 deletions

View File

@ -39,6 +39,7 @@ __all__ = [
'NestedRackReservationSerializer', 'NestedRackReservationSerializer',
'NestedRackRoleSerializer', 'NestedRackRoleSerializer',
'NestedRackSerializer', 'NestedRackSerializer',
'NestedRackTypeSerializer',
'NestedRearPortSerializer', 'NestedRearPortSerializer',
'NestedRearPortTemplateSerializer', 'NestedRearPortTemplateSerializer',
'NestedRegionSerializer', 'NestedRegionSerializer',
@ -111,6 +112,13 @@ class NestedRackRoleSerializer(WritableNestedSerializer):
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'rack_count'] fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'rack_count']
class NestedRackTypeSerializer(WritableNestedSerializer):
class Meta:
model = models.RackType
fields = ['id', 'url', 'display_url', 'display', 'name']
@extend_schema_serializer( @extend_schema_serializer(
exclude_fields=('device_count',), exclude_fields=('device_count',),
) )

View File

@ -16,6 +16,7 @@ __all__ = (
'RackReservationSerializer', 'RackReservationSerializer',
'RackRoleSerializer', 'RackRoleSerializer',
'RackSerializer', 'RackSerializer',
'RackTypeSerializer',
) )
@ -33,6 +34,23 @@ class RackRoleSerializer(NetBoxModelSerializer):
brief_fields = ('id', 'url', 'display', 'name', 'slug', 'description', 'rack_count') brief_fields = ('id', 'url', 'display', 'name', 'slug', 'description', 'rack_count')
class RackTypeSerializer(NetBoxModelSerializer):
type = ChoiceField(choices=RackTypeChoices, allow_blank=True, required=False, allow_null=True)
width = ChoiceField(choices=RackWidthChoices, required=False)
outer_unit = ChoiceField(choices=RackDimensionUnitChoices, allow_blank=True, required=False, allow_null=True)
weight_unit = ChoiceField(choices=WeightUnitChoices, allow_blank=True, required=False, allow_null=True)
class Meta:
model = Rack
fields = [
'id', 'url', 'display_url', 'display', 'name',
'type', 'width', 'u_height', 'starting_unit', 'weight', 'max_weight',
'weight_unit', 'desc_units', 'outer_width', 'outer_depth', 'outer_unit', 'mounting_depth', 'description',
'comments', 'tags', 'custom_fields', 'created', 'last_updated',
]
brief_fields = ('id', 'url', 'display', 'name', 'description')
class RackSerializer(NetBoxModelSerializer): class RackSerializer(NetBoxModelSerializer):
site = SiteSerializer(nested=True) site = SiteSerializer(nested=True)
location = LocationSerializer(nested=True, required=False, allow_null=True, default=None) location = LocationSerializer(nested=True, required=False, allow_null=True, default=None)

View File

@ -15,6 +15,7 @@ router.register('locations', views.LocationViewSet)
router.register('rack-roles', views.RackRoleViewSet) router.register('rack-roles', views.RackRoleViewSet)
router.register('racks', views.RackViewSet) router.register('racks', views.RackViewSet)
router.register('rack-reservations', views.RackReservationViewSet) router.register('rack-reservations', views.RackReservationViewSet)
router.register('rack-types', views.RackTypeViewSet)
# Device/module types # Device/module types
router.register('manufacturers', views.ManufacturerViewSet) router.register('manufacturers', views.ManufacturerViewSet)

View File

@ -161,6 +161,16 @@ class RackRoleViewSet(NetBoxModelViewSet):
filterset_class = filtersets.RackRoleFilterSet filterset_class = filtersets.RackRoleFilterSet
#
# Rack Types
#
class RackTypeViewSet(NetBoxModelViewSet):
queryset = RackType.objects.all()
serializer_class = serializers.RackTypeSerializer
filterset_class = filtersets.RackTypeFilterSet
# #
# Racks # Racks
# #