Coverage for dcim/forms/bulk_create.py: 100%

50 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 18:35 +0000

1from django import forms 

2from django.utils.translation import gettext_lazy as _ 

3 

4from dcim.models import * 

5from extras.models import Tag 

6from netbox.forms.mixins import ChangelogMessageMixin, CustomFieldsMixin 

7from utilities.forms import form_from_model 

8from utilities.forms.fields import DynamicModelMultipleChoiceField, ExpandableNameField 

9from utilities.forms.mixins import BackgroundJobMixin 

10 

11from .object_create import ComponentCreateForm 

12 

13__all__ = ( 

14 'ConsolePortBulkCreateForm', 

15 'ConsoleServerPortBulkCreateForm', 

16 'CoolingIntakeBulkCreateForm', 

17 'CoolingOutflowBulkCreateForm', 

18 'DeviceBayBulkCreateForm', 

19 # 'FrontPortBulkCreateForm', 

20 'InterfaceBulkCreateForm', 

21 'InventoryItemBulkCreateForm', 

22 'ModuleBayBulkCreateForm', 

23 'PowerOutletBulkCreateForm', 

24 'PowerPortBulkCreateForm', 

25 'RearPortBulkCreateForm', 

26) 

27 

28 

29# 

30# Device components 

31# 

32 

33class DeviceBulkAddComponentForm(BackgroundJobMixin, ChangelogMessageMixin, CustomFieldsMixin, ComponentCreateForm): 

34 pk = forms.ModelMultipleChoiceField( 

35 queryset=Device.objects.all(), 

36 widget=forms.MultipleHiddenInput() 

37 ) 

38 description = forms.CharField( 

39 label=_('Description'), 

40 max_length=100, 

41 required=False 

42 ) 

43 tags = DynamicModelMultipleChoiceField( 

44 label=_('Tags'), 

45 queryset=Tag.objects.all(), 

46 required=False 

47 ) 

48 replication_fields = ('name', 'label') 

49 

50 

51class ConsolePortBulkCreateForm( 

52 form_from_model(ConsolePort, ['type', 'speed', 'mark_connected']), 

53 DeviceBulkAddComponentForm 

54): 

55 model = ConsolePort 

56 field_order = ('name', 'label', 'type', 'mark_connected', 'description', 'tags') 

57 

58 

59class ConsoleServerPortBulkCreateForm( 

60 form_from_model(ConsoleServerPort, ['type', 'speed', 'mark_connected']), 

61 DeviceBulkAddComponentForm 

62): 

63 model = ConsoleServerPort 

64 field_order = ('name', 'label', 'type', 'speed', 'description', 'tags') 

65 

66 

67class PowerPortBulkCreateForm( 

68 form_from_model(PowerPort, ['type', 'maximum_draw', 'allocated_draw', 'mark_connected']), 

69 DeviceBulkAddComponentForm 

70): 

71 model = PowerPort 

72 field_order = ('name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description', 'tags') 

73 

74 

75class PowerOutletBulkCreateForm( 

76 form_from_model(PowerOutlet, ['type', 'status', 'color', 'feed_leg', 'mark_connected']), 

77 DeviceBulkAddComponentForm 

78): 

79 model = PowerOutlet 

80 field_order = ( 

81 'name', 'label', 'type', 'status', 'color', 'feed_leg', 'mark_connected', 

82 'description', 'tags', 

83 ) 

84 

85 

86class CoolingIntakeBulkCreateForm( 

87 form_from_model( 

88 CoolingIntake, 

89 [ 

90 'type', 'diameter', 'diameter_unit', 'max_flow', 'max_flow_unit' 

91 ] 

92 ), 

93 DeviceBulkAddComponentForm 

94): 

95 model = CoolingIntake 

96 field_order = ( 

97 'name', 'label', 'type', 'diameter', 'diameter_unit', 'max_flow', 'max_flow_unit', 

98 'description', 'tags', 

99 ) 

100 

101 

102class CoolingOutflowBulkCreateForm( 

103 form_from_model(CoolingOutflow, ['type', 'diameter', 'diameter_unit']), 

104 DeviceBulkAddComponentForm 

105): 

106 model = CoolingOutflow 

107 field_order = ( 

108 'name', 'label', 'type', 'diameter', 'diameter_unit', 

109 'description', 'tags', 

110 ) 

111 

112 

113class InterfaceBulkCreateForm( 

114 form_from_model(Interface, [ 

115 'type', 'enabled', 'speed', 'duplex', 'mtu', 'mgmt_only', 'mark_connected', 'poe_mode', 'poe_type', 'rf_role' 

116 ]), 

117 DeviceBulkAddComponentForm 

118): 

119 model = Interface 

120 field_order = ( 

121 'name', 'label', 'type', 'enabled', 'speed', 'duplex', 'mtu', 'mgmt_only', 'poe_mode', 

122 'poe_type', 'mark_connected', 'rf_role', 'description', 'tags', 

123 ) 

124 

125 

126# class FrontPortBulkCreateForm( 

127# form_from_model(FrontPort, ['label', 'type', 'color', 'description', 'tags']), 

128# DeviceBulkAddComponentForm 

129# ): 

130# pass 

131 

132 

133class RearPortBulkCreateForm( 

134 form_from_model(RearPort, ['type', 'color', 'positions', 'mark_connected']), 

135 DeviceBulkAddComponentForm 

136): 

137 model = RearPort 

138 field_order = ('name', 'label', 'type', 'positions', 'mark_connected', 'description', 'tags') 

139 

140 

141class ModuleBayBulkCreateForm( 

142 form_from_model(ModuleBay, ['enabled']), 

143 DeviceBulkAddComponentForm 

144): 

145 model = ModuleBay 

146 field_order = ('name', 'label', 'position', 'enabled', 'description', 'tags') 

147 replication_fields = ('name', 'label', 'position') 

148 position = ExpandableNameField( 

149 label=_('Position'), 

150 required=False, 

151 help_text=_('Alphanumeric ranges are supported. (Must match the number of names being created.)') 

152 ) 

153 

154 

155class DeviceBayBulkCreateForm( 

156 form_from_model(DeviceBay, ['enabled']), 

157 DeviceBulkAddComponentForm 

158): 

159 model = DeviceBay 

160 field_order = ('name', 'label', 'enabled', 'description', 'tags') 

161 

162 

163class InventoryItemBulkCreateForm( 

164 form_from_model(InventoryItem, ['status', 'role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'discovered']), 

165 DeviceBulkAddComponentForm 

166): 

167 model = InventoryItem 

168 field_order = ( 

169 'name', 'label', 'status', 'role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'discovered', 

170 'description', 'tags', 

171 )