mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Added a form to edit virtual chassis
This commit is contained in:
@@ -2177,11 +2177,31 @@ class InventoryItemForm(BootstrapMixin, forms.ModelForm):
|
||||
#
|
||||
|
||||
class VirtualChassisForm(BootstrapMixin, forms.ModelForm):
|
||||
master = forms.ModelChoiceField(queryset=Device.objects.all())
|
||||
|
||||
class Meta:
|
||||
model = VirtualChassis
|
||||
fields = ['domain']
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(VirtualChassisForm, self).__init__(*args, **kwargs)
|
||||
|
||||
if self.instance:
|
||||
vc_memberships = self.instance.memberships.all()
|
||||
self.fields['master'].queryset = Device.objects.filter(pk__in=[vcm.device_id for vcm in vc_memberships])
|
||||
self.initial['master'] = self.instance.master
|
||||
|
||||
def save(self, commit=True):
|
||||
instance = super(VirtualChassisForm, self).save(commit=commit)
|
||||
|
||||
# Update the master membership if it has been changed
|
||||
master = self.cleaned_data['master']
|
||||
if instance.pk and instance.master != master:
|
||||
VCMembership.objects.filter(virtual_chassis=self.instance).update(is_master=False)
|
||||
VCMembership.objects.filter(virtual_chassis=self.instance, device=master).update(is_master=True)
|
||||
|
||||
return instance
|
||||
|
||||
|
||||
class DeviceSelectionForm(forms.Form):
|
||||
pk = forms.ModelMultipleChoiceField(queryset=Device.objects.all(), widget=forms.MultipleHiddenInput)
|
||||
|
||||
Reference in New Issue
Block a user