@@ -3779,6 +3779,7 @@ def get(self, request, pk):
37793779 def post (self , request , pk ):
37803780
37813781 virtual_chassis = get_object_or_404 (self .queryset , pk = pk )
3782+ virtual_chassis .snapshot ()
37823783 VCMemberFormSet = modelformset_factory (
37833784 model = Device ,
37843785 form = forms .DeviceVCMembershipForm ,
@@ -3831,9 +3832,7 @@ def get_required_permission(self):
38313832 return 'dcim.change_virtualchassis'
38323833
38333834 def get (self , request , pk ):
3834-
38353835 virtual_chassis = get_object_or_404 (self .queryset , pk = pk )
3836-
38373836 initial_data = {k : request .GET [k ] for k in request .GET }
38383837 member_select_form = forms .VCMemberSelectForm (initial = initial_data )
38393838 membership_form = forms .DeviceVCMembershipForm (initial = initial_data )
@@ -3846,20 +3845,20 @@ def get(self, request, pk):
38463845 })
38473846
38483847 def post (self , request , pk ):
3849-
38503848 virtual_chassis = get_object_or_404 (self .queryset , pk = pk )
3851-
38523849 member_select_form = forms .VCMemberSelectForm (request .POST )
38533850
38543851 if member_select_form .is_valid ():
3855-
38563852 device = member_select_form .cleaned_data ['device' ]
3853+ device .snapshot ()
38573854 device .virtual_chassis = virtual_chassis
3858- data = {k : request .POST [k ] for k in ['vc_position' , 'vc_priority' ]}
3855+ data = {
3856+ 'vc_position' : request .POST ['vc_position' ],
3857+ 'vc_priority' : request .POST ['vc_priority' ],
3858+ }
38593859 membership_form = forms .DeviceVCMembershipForm (data = data , validate_vc_position = True , instance = device )
38603860
38613861 if membership_form .is_valid ():
3862-
38633862 membership_form .save ()
38643863 messages .success (request , mark_safe (
38653864 _ ('Added member <a href="{url}">{device}</a>' ).format (
@@ -3869,11 +3868,9 @@ def post(self, request, pk):
38693868
38703869 if '_addanother' in request .POST and safe_for_redirect (request .get_full_path ()):
38713870 return redirect (request .get_full_path ())
3872-
38733871 return redirect (self .get_return_url (request , device ))
38743872
38753873 else :
3876-
38773874 membership_form = forms .DeviceVCMembershipForm (data = request .POST )
38783875
38793876 return render (request , 'dcim/virtualchassis_add_member.html' , {
@@ -3891,7 +3888,6 @@ def get_required_permission(self):
38913888 return 'dcim.change_device'
38923889
38933890 def get (self , request , pk ):
3894-
38953891 device = get_object_or_404 (self .queryset , pk = pk , virtual_chassis__isnull = False )
38963892 form = ConfirmationForm (initial = request .GET )
38973893
@@ -3902,7 +3898,6 @@ def get(self, request, pk):
39023898 })
39033899
39043900 def post (self , request , pk ):
3905-
39063901 device = get_object_or_404 (self .queryset , pk = pk , virtual_chassis__isnull = False )
39073902 form = ConfirmationForm (request .POST )
39083903
@@ -3916,13 +3911,11 @@ def post(self, request, pk):
39163911 return redirect (device .get_absolute_url ())
39173912
39183913 if form .is_valid ():
3919-
3920- devices = Device .objects .filter (pk = device .pk )
3921- for device in devices :
3922- device .virtual_chassis = None
3923- device .vc_position = None
3924- device .vc_priority = None
3925- device .save ()
3914+ device .snapshot ()
3915+ device .virtual_chassis = None
3916+ device .vc_position = None
3917+ device .vc_priority = None
3918+ device .save ()
39263919
39273920 msg = _ ('Removed {device} from virtual chassis {chassis}' ).format (
39283921 device = device ,
0 commit comments