1
0
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:
Jeremy Stretch
2017-12-07 17:05:03 -05:00
parent 2545912532
commit a85b3aa69f
5 changed files with 51 additions and 10 deletions

View File

@@ -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)