Coverage for dcim/api/serializers_/nested.py: 100%
66 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1from drf_spectacular.utils import extend_schema_serializer
2from rest_framework import serializers
4from dcim import models
5from netbox.api.serializers import WritableNestedSerializer
7__all__ = (
8 'NestedCoolingOutflowSerializer',
9 'NestedDeviceBaySerializer',
10 'NestedDeviceRoleSerializer',
11 'NestedDeviceSerializer',
12 'NestedInterfaceSerializer',
13 'NestedInterfaceTemplateSerializer',
14 'NestedLocationSerializer',
15 'NestedModuleBaySerializer',
16 'NestedPlatformSerializer',
17 'NestedRegionSerializer',
18 'NestedSiteGroupSerializer',
19)
22@extend_schema_serializer(
23 exclude_fields=('site_count',),
24)
25class NestedRegionSerializer(WritableNestedSerializer):
26 site_count = serializers.IntegerField(read_only=True)
27 _depth = serializers.IntegerField(source='level', read_only=True)
29 class Meta:
30 model = models.Region
31 fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'site_count', '_depth']
34@extend_schema_serializer(
35 exclude_fields=('site_count',),
36)
37class NestedSiteGroupSerializer(WritableNestedSerializer):
38 site_count = serializers.IntegerField(read_only=True)
39 _depth = serializers.IntegerField(source='level', read_only=True)
41 class Meta:
42 model = models.SiteGroup
43 fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'site_count', '_depth']
46@extend_schema_serializer(
47 exclude_fields=('rack_count',),
48)
49class NestedLocationSerializer(WritableNestedSerializer):
50 rack_count = serializers.IntegerField(read_only=True)
51 _depth = serializers.IntegerField(source='level', read_only=True)
53 class Meta:
54 model = models.Location
55 fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'rack_count', '_depth']
58class NestedDeviceRoleSerializer(WritableNestedSerializer):
60 class Meta:
61 model = models.DeviceRole
62 fields = ['id', 'url', 'display_url', 'display', 'name']
65class NestedDeviceSerializer(WritableNestedSerializer):
67 class Meta:
68 model = models.Device
69 fields = ['id', 'url', 'display_url', 'display', 'name']
72class NestedCoolingOutflowSerializer(WritableNestedSerializer):
73 device = NestedDeviceSerializer(read_only=True)
75 class Meta:
76 model = models.CoolingOutflow
77 fields = ['id', 'url', 'display_url', 'display', 'device', 'name']
80class NestedInterfaceSerializer(WritableNestedSerializer):
81 device = NestedDeviceSerializer(read_only=True)
82 _occupied = serializers.BooleanField(required=False, read_only=True)
84 class Meta:
85 model = models.Interface
86 fields = ['id', 'url', 'display_url', 'display', 'device', 'name', 'cable', '_occupied']
89class NestedInterfaceTemplateSerializer(WritableNestedSerializer):
91 class Meta:
92 model = models.InterfaceTemplate
93 fields = ['id', 'url', 'display', 'name']
96class NestedDeviceBaySerializer(WritableNestedSerializer):
97 device = NestedDeviceSerializer(read_only=True)
99 class Meta:
100 model = models.DeviceBay
101 fields = ['id', 'url', 'display_url', 'display', 'device', 'name']
104class ModuleBayNestedModuleSerializer(WritableNestedSerializer):
106 class Meta:
107 model = models.Module
108 fields = ['id', 'url', 'display_url', 'display', 'serial']
111class NestedModuleBaySerializer(WritableNestedSerializer):
113 class Meta:
114 model = models.ModuleBay
115 fields = ['id', 'url', 'display_url', 'display', 'name']
118class NestedPlatformSerializer(WritableNestedSerializer):
120 class Meta:
121 model = models.Platform
122 fields = ['id', 'url', 'display_url', 'display', 'name']