Coverage for  / home / runner / work / netbox-data-import-plugin / netbox-data-import-plugin / netbox-data-import-plugin / netbox_data_import / api / serializers.py: 100%

37 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-04-01 12:13 +0000

1# SPDX-License-Identifier: Apache-2.0 

2# Copyright (C) 2025 Marcin Zieba <marcinpsk@gmail.com> 

3"""DRF serializers for the data-import plugin models.""" 

4 

5from netbox.api.serializers import NetBoxModelSerializer 

6from rest_framework import serializers 

7 

8from ..models import ( 

9 ImportProfile, 

10 ColumnMapping, 

11 ClassRoleMapping, 

12 DeviceTypeMapping, 

13 IgnoredDevice, 

14 ColumnTransformRule, 

15 SourceResolution, 

16 ImportJob, 

17) 

18 

19 

20class ImportProfileSerializer(NetBoxModelSerializer): 

21 """Full serializer for ImportProfile (NetBoxModel).""" 

22 

23 url = serializers.HyperlinkedIdentityField( 

24 view_name="plugins-api:netbox_data_import-api:importprofile-detail", 

25 ) 

26 

27 class Meta: 

28 model = ImportProfile 

29 fields = [ 

30 "id", 

31 "url", 

32 "display", 

33 "name", 

34 "description", 

35 "sheet_name", 

36 "source_id_column", 

37 "custom_field_name", 

38 "update_existing", 

39 "create_missing_device_types", 

40 "preview_view_mode", 

41 "tags", 

42 "custom_fields", 

43 "created", 

44 "last_updated", 

45 ] 

46 

47 

48class ColumnMappingSerializer(serializers.ModelSerializer): 

49 """Serializer for ColumnMapping (plain model).""" 

50 

51 class Meta: 

52 model = ColumnMapping 

53 fields = ["id", "profile", "source_column", "target_field"] 

54 

55 

56class ClassRoleMappingSerializer(serializers.ModelSerializer): 

57 """Serializer for ClassRoleMapping (plain model).""" 

58 

59 class Meta: 

60 model = ClassRoleMapping 

61 fields = ["id", "profile", "source_class", "creates_rack", "role_slug", "ignore"] 

62 

63 

64class DeviceTypeMappingSerializer(serializers.ModelSerializer): 

65 """Serializer for DeviceTypeMapping (plain model).""" 

66 

67 class Meta: 

68 model = DeviceTypeMapping 

69 fields = [ 

70 "id", 

71 "profile", 

72 "source_make", 

73 "source_model", 

74 "netbox_manufacturer_slug", 

75 "netbox_device_type_slug", 

76 ] 

77 

78 

79class IgnoredDeviceSerializer(serializers.ModelSerializer): 

80 """Serializer for IgnoredDevice (plain model).""" 

81 

82 class Meta: 

83 model = IgnoredDevice 

84 fields = ["id", "profile", "source_id", "device_name"] 

85 

86 

87class ColumnTransformRuleSerializer(serializers.ModelSerializer): 

88 """Serializer for ColumnTransformRule (plain model).""" 

89 

90 class Meta: 

91 model = ColumnTransformRule 

92 fields = [ 

93 "id", 

94 "profile", 

95 "source_column", 

96 "pattern", 

97 "group_1_target", 

98 "group_2_target", 

99 ] 

100 

101 

102class SourceResolutionSerializer(serializers.ModelSerializer): 

103 """Serializer for SourceResolution (rerere, plain model).""" 

104 

105 class Meta: 

106 model = SourceResolution 

107 fields = [ 

108 "id", 

109 "profile", 

110 "source_id", 

111 "source_column", 

112 "original_value", 

113 "resolved_fields", 

114 ] 

115 

116 

117class ImportJobSerializer(serializers.ModelSerializer): 

118 """Read-only serializer for ImportJob (plain model).""" 

119 

120 class Meta: 

121 model = ImportJob 

122 fields = [ 

123 "id", 

124 "profile", 

125 "created", 

126 "input_filename", 

127 "dry_run", 

128 "site_name", 

129 "result_counts", 

130 ] 

131 read_only_fields = fields