mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-18 05:28:16 -06:00
Work on excluding assigned_objects
This commit is contained in:
parent
366351dd23
commit
6aa4670c39
@ -341,19 +341,6 @@ class IPAddressForm(TenancyForm, NetBoxModelForm):
|
||||
self.fields['vminterface'].disabled = True
|
||||
self.fields['fhrpgroup'].disabled = True
|
||||
|
||||
# Correctly assigned assigned_object if the error exists when validating this form.
|
||||
def add_error(self, field, errors):
|
||||
if isinstance(errors, ValidationError) and hasattr(errors, 'error_dict') and \
|
||||
errors.error_dict.get('assigned_object', None):
|
||||
error = errors.error_dict.pop('assigned_object')
|
||||
if isinstance(self.instance.assigned_object, Interface):
|
||||
errors.error_dict.update({'interface': error})
|
||||
elif isinstance(self.instance.assigned_object, VMInterface):
|
||||
errors.error_dict.update({'vminterface': error})
|
||||
elif isinstance(self.instance.assigned_object, FHRPGroup):
|
||||
errors.error_dict.update({'fhrpgroup': error})
|
||||
super().add_error(field, errors)
|
||||
|
||||
def clean(self):
|
||||
super().clean()
|
||||
|
||||
@ -382,6 +369,15 @@ class IPAddressForm(TenancyForm, NetBoxModelForm):
|
||||
'primary_for_parent', _("Only IP addresses assigned to an interface can be designated as primary IPs.")
|
||||
)
|
||||
|
||||
prev_interface = self.instance.interface.first() or self.instance.vminterface.first()
|
||||
prev_parent = prev_interface.device or prev_interface.virtual_machine
|
||||
if prev_interface and prev_parent and prev_interface != interface:
|
||||
if prev_parent.primary_ip4 == self.instance or prev_parent.primary_ip6 == self.instance:
|
||||
self.add_error(
|
||||
selected_objects[0],
|
||||
_("Cannot reassign IP address while it is designated as the primary ip for the parent object")
|
||||
)
|
||||
|
||||
# Do not allow assigning a network ID or broadcast address to an interface.
|
||||
if interface and (address := self.cleaned_data.get('address')):
|
||||
if address.ip == address.network:
|
||||
|
Loading…
Reference in New Issue
Block a user