From 82932ae7a57f3eafa9ed30d46ee168a24d0c46db Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Mon, 20 Dec 2021 11:07:44 -0600 Subject: [PATCH] Fixes #8102 - Add validation around assigned objects --- docs/release-notes/version-3.1.md | 1 + netbox/ipam/forms/models.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index c3a566965..629afc0a7 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -22,6 +22,7 @@ * [#8088](https://github.com/netbox-community/netbox/issues/8088) - Improve legibility of text in labels with light-colored backgrounds * [#8092](https://github.com/netbox-community/netbox/issues/8092) - Rack elevations should not include device asset tags * [#8096](https://github.com/netbox-community/netbox/issues/8096) - Fix DataError during change logging of objects with very long string representations +* [#8102](https://github.com/netbox-community/netbox/issues/8102) - Cause validation error when editing IPAddress when more than one object is selected for assignment --- diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index 36b9219da..66fcdb43b 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -461,6 +461,20 @@ class IPAddressForm(TenancyForm, CustomFieldModelForm): def clean(self): super().clean() + if self.cleaned_data['interface'] and self.cleaned_data['vminterface'] and self.cleaned_data['fhrpgroup']: + self.add_error('interface', "Can only assign an interface, VM interface or FHRP group") + self.add_error('vminterface', "Can only assign an interface, VM interface or FHRP group") + self.add_error('fhrpgroup', "Can only assign an interface, VM interface or FHRP group") + elif self.cleaned_data['interface'] and self.cleaned_data['vminterface']: + self.add_error('interface', "Can only assign an interface or VM interface") + self.add_error('vminterface', "Can only assign an interface or VM interface") + elif self.cleaned_data['interface'] and self.cleaned_data['fhrpgroup']: + self.add_error('interface', "Can only assign an interface or FHRP group") + self.add_error('fhrpgroup', "Can only assign an interface or FHRP group") + elif self.cleaned_data['vminterface'] and self.cleaned_data['fhrpgroup']: + self.add_error('vminterface', "Can only assign an VM interface or FHRP group") + self.add_error('fhrpgroup', "Can only assign an VM interface or FHRP group") + # Handle object assignment if self.cleaned_data['interface']: self.instance.assigned_object = self.cleaned_data['interface']