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

1from drf_spectacular.utils import extend_schema_serializer 

2from rest_framework import serializers 

3 

4from dcim import models 

5from netbox.api.serializers import WritableNestedSerializer 

6 

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) 

20 

21 

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) 

28 

29 class Meta: 

30 model = models.Region 

31 fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'site_count', '_depth'] 

32 

33 

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) 

40 

41 class Meta: 

42 model = models.SiteGroup 

43 fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'site_count', '_depth'] 

44 

45 

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) 

52 

53 class Meta: 

54 model = models.Location 

55 fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'rack_count', '_depth'] 

56 

57 

58class NestedDeviceRoleSerializer(WritableNestedSerializer): 

59 

60 class Meta: 

61 model = models.DeviceRole 

62 fields = ['id', 'url', 'display_url', 'display', 'name'] 

63 

64 

65class NestedDeviceSerializer(WritableNestedSerializer): 

66 

67 class Meta: 

68 model = models.Device 

69 fields = ['id', 'url', 'display_url', 'display', 'name'] 

70 

71 

72class NestedCoolingOutflowSerializer(WritableNestedSerializer): 

73 device = NestedDeviceSerializer(read_only=True) 

74 

75 class Meta: 

76 model = models.CoolingOutflow 

77 fields = ['id', 'url', 'display_url', 'display', 'device', 'name'] 

78 

79 

80class NestedInterfaceSerializer(WritableNestedSerializer): 

81 device = NestedDeviceSerializer(read_only=True) 

82 _occupied = serializers.BooleanField(required=False, read_only=True) 

83 

84 class Meta: 

85 model = models.Interface 

86 fields = ['id', 'url', 'display_url', 'display', 'device', 'name', 'cable', '_occupied'] 

87 

88 

89class NestedInterfaceTemplateSerializer(WritableNestedSerializer): 

90 

91 class Meta: 

92 model = models.InterfaceTemplate 

93 fields = ['id', 'url', 'display', 'name'] 

94 

95 

96class NestedDeviceBaySerializer(WritableNestedSerializer): 

97 device = NestedDeviceSerializer(read_only=True) 

98 

99 class Meta: 

100 model = models.DeviceBay 

101 fields = ['id', 'url', 'display_url', 'display', 'device', 'name'] 

102 

103 

104class ModuleBayNestedModuleSerializer(WritableNestedSerializer): 

105 

106 class Meta: 

107 model = models.Module 

108 fields = ['id', 'url', 'display_url', 'display', 'serial'] 

109 

110 

111class NestedModuleBaySerializer(WritableNestedSerializer): 

112 

113 class Meta: 

114 model = models.ModuleBay 

115 fields = ['id', 'url', 'display_url', 'display', 'name'] 

116 

117 

118class NestedPlatformSerializer(WritableNestedSerializer): 

119 

120 class Meta: 

121 model = models.Platform 

122 fields = ['id', 'url', 'display_url', 'display', 'name']