Closes #9003: Enable bulk module assignment/removal for device components

This commit is contained in:
jeremystretch 2022-04-01 09:42:30 -04:00
parent b576ce72a1
commit 7fff1e6fe5

View File

@ -912,9 +912,33 @@ class InventoryItemTemplateBulkEditForm(BulkEditForm):
# Device components
#
class ComponentBulkEditForm(NetBoxModelBulkEditForm):
device = forms.ModelChoiceField(
queryset=Device.objects.all(),
required=False,
disabled=True,
widget=forms.HiddenInput()
)
module = forms.ModelChoiceField(
queryset=Module.objects.all(),
required=False
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Limit module queryset to Modules which belong to the parent Device
if 'device' in self.initial:
device = Device.objects.filter(pk=self.initial['device']).first()
self.fields['module'].queryset = Module.objects.filter(device=device)
else:
self.fields['module'].choices = ()
self.fields['module'].widget.attrs['disabled'] = True
class ConsolePortBulkEditForm(
form_from_model(ConsolePort, ['label', 'type', 'speed', 'mark_connected', 'description']),
NetBoxModelBulkEditForm
ComponentBulkEditForm
):
mark_connected = forms.NullBooleanField(
required=False,
@ -923,14 +947,14 @@ class ConsolePortBulkEditForm(
model = ConsolePort
fieldsets = (
(None, ('type', 'label', 'speed', 'description', 'mark_connected')),
(None, ('module', 'type', 'label', 'speed', 'description', 'mark_connected')),
)
nullable_fields = ('label', 'description')
nullable_fields = ('module', 'label', 'description')
class ConsoleServerPortBulkEditForm(
form_from_model(ConsoleServerPort, ['label', 'type', 'speed', 'mark_connected', 'description']),
NetBoxModelBulkEditForm
ComponentBulkEditForm
):
mark_connected = forms.NullBooleanField(
required=False,
@ -939,14 +963,14 @@ class ConsoleServerPortBulkEditForm(
model = ConsoleServerPort
fieldsets = (
(None, ('type', 'label', 'speed', 'description', 'mark_connected')),
(None, ('module', 'type', 'label', 'speed', 'description', 'mark_connected')),
)
nullable_fields = ('label', 'description')
nullable_fields = ('module', 'label', 'description')
class PowerPortBulkEditForm(
form_from_model(PowerPort, ['label', 'type', 'maximum_draw', 'allocated_draw', 'mark_connected', 'description']),
NetBoxModelBulkEditForm
ComponentBulkEditForm
):
mark_connected = forms.NullBooleanField(
required=False,
@ -955,22 +979,16 @@ class PowerPortBulkEditForm(
model = PowerPort
fieldsets = (
(None, ('type', 'label', 'description', 'mark_connected')),
(None, ('module', 'type', 'label', 'description', 'mark_connected')),
('Power', ('maximum_draw', 'allocated_draw')),
)
nullable_fields = ('label', 'description')
nullable_fields = ('module', 'label', 'description')
class PowerOutletBulkEditForm(
form_from_model(PowerOutlet, ['label', 'type', 'feed_leg', 'power_port', 'mark_connected', 'description']),
NetBoxModelBulkEditForm
ComponentBulkEditForm
):
device = forms.ModelChoiceField(
queryset=Device.objects.all(),
required=False,
disabled=True,
widget=forms.HiddenInput()
)
mark_connected = forms.NullBooleanField(
required=False,
widget=BulkEditNullBooleanSelect
@ -978,10 +996,10 @@ class PowerOutletBulkEditForm(
model = PowerOutlet
fieldsets = (
(None, ('type', 'label', 'description', 'mark_connected')),
(None, ('module', 'type', 'label', 'description', 'mark_connected')),
('Power', ('feed_leg', 'power_port')),
)
nullable_fields = ('label', 'type', 'feed_leg', 'power_port', 'description')
nullable_fields = ('module', 'label', 'type', 'feed_leg', 'power_port', 'description')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@ -1001,14 +1019,8 @@ class InterfaceBulkEditForm(
'mark_connected', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width',
'tx_power',
]),
NetBoxModelBulkEditForm
ComponentBulkEditForm
):
device = forms.ModelChoiceField(
queryset=Device.objects.all(),
required=False,
disabled=True,
widget=forms.HiddenInput()
)
enabled = forms.NullBooleanField(
required=False,
widget=BulkEditNullBooleanSelect
@ -1059,7 +1071,7 @@ class InterfaceBulkEditForm(
model = Interface
fieldsets = (
(None, ('type', 'label', 'speed', 'duplex', 'description')),
(None, ('module', 'type', 'label', 'speed', 'duplex', 'description')),
('Addressing', ('vrf', 'mac_address', 'wwn')),
('Operation', ('mtu', 'tx_power', 'enabled', 'mgmt_only', 'mark_connected')),
('Related Interfaces', ('parent', 'bridge', 'lag')),
@ -1067,8 +1079,9 @@ class InterfaceBulkEditForm(
('Wireless', ('rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width')),
)
nullable_fields = (
'label', 'parent', 'bridge', 'lag', 'speed', 'duplex', 'mac_address', 'wwn', 'mtu', 'description', 'mode',
'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'tx_power', 'untagged_vlan', 'tagged_vlans', 'vrf',
'module', 'label', 'parent', 'bridge', 'lag', 'speed', 'duplex', 'mac_address', 'wwn', 'mtu', 'description',
'mode', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'tx_power', 'untagged_vlan', 'tagged_vlans',
'vrf',
)
def __init__(self, *args, **kwargs):
@ -1133,24 +1146,24 @@ class InterfaceBulkEditForm(
class FrontPortBulkEditForm(
form_from_model(FrontPort, ['label', 'type', 'color', 'mark_connected', 'description']),
NetBoxModelBulkEditForm
ComponentBulkEditForm
):
model = FrontPort
fieldsets = (
(None, ('type', 'label', 'color', 'description', 'mark_connected')),
(None, ('module', 'type', 'label', 'color', 'description', 'mark_connected')),
)
nullable_fields = ('label', 'description')
nullable_fields = ('module', 'label', 'description')
class RearPortBulkEditForm(
form_from_model(RearPort, ['label', 'type', 'color', 'mark_connected', 'description']),
NetBoxModelBulkEditForm
ComponentBulkEditForm
):
model = RearPort
fieldsets = (
(None, ('type', 'label', 'color', 'description', 'mark_connected')),
(None, ('module', 'type', 'label', 'color', 'description', 'mark_connected')),
)
nullable_fields = ('label', 'description')
nullable_fields = ('module', 'label', 'description')
class ModuleBayBulkEditForm(