Browse Source

Fixes #1907: Allow removing an IP as the primary for a device when editing the IP directly

Jeremy Stretch 7 years ago
parent
commit
5ed797cfc9
1 changed files with 8 additions and 11 deletions
  1. 8 11
      netbox/ipam/forms.py

+ 8 - 11
netbox/ipam/forms.py

@@ -520,17 +520,14 @@ class IPAddressForm(BootstrapMixin, TenancyForm, ReturnURLForm, CustomFieldForm)
             parent.save()
 
         # Clear assignment as primary for device if set.
-        else:
-            try:
-                if ipaddress.address.version == 4:
-                    device = ipaddress.primary_ip4_for
-                    device.primary_ip4 = None
-                else:
-                    device = ipaddress.primary_ip6_for
-                    device.primary_ip6 = None
-                device.save()
-            except Device.DoesNotExist:
-                pass
+        elif self.cleaned_data['interface']:
+            parent = self.cleaned_data['interface'].parent
+            if ipaddress.address.version == 4 and parent.primary_ip4 == self:
+                parent.primary_ip4 = None
+                parent.save()
+            elif ipaddress.address.version == 6 and parent.primary_ip6 == self:
+                parent.primary_ip6 = None
+                parent.save()
 
         return ipaddress