From 002cb3c89623cb011d2791b459354cca77022ea2 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 17 Oct 2023 07:21:14 -0700 Subject: [PATCH] 14033 move check to cable model clean --- netbox/dcim/forms/connections.py | 6 ------ netbox/dcim/models/cables.py | 6 ++++++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/netbox/dcim/forms/connections.py b/netbox/dcim/forms/connections.py index 28677f977..854c5ebed 100644 --- a/netbox/dcim/forms/connections.py +++ b/netbox/dcim/forms/connections.py @@ -103,10 +103,4 @@ def get_cable_form(a_type, b_type): self.instance.a_terminations = self.cleaned_data['a_terminations'] self.instance.b_terminations = self.cleaned_data['b_terminations'] - if a_type == b_type and self.instance.a_terminations and self.instance.b_terminations: - if self.instance.a_terminations.intersection(self.instance.b_terminations): - raise forms.ValidationError( - _("A and B terminations cannot connect to the same object.") - ) - return _CableForm diff --git a/netbox/dcim/models/cables.py b/netbox/dcim/models/cables.py index 751bca271..4283f74a8 100644 --- a/netbox/dcim/models/cables.py +++ b/netbox/dcim/models/cables.py @@ -180,6 +180,12 @@ class Cable(PrimaryModel): if b_type not in COMPATIBLE_TERMINATION_TYPES.get(a_type): raise ValidationError(f"Incompatible termination types: {a_type} and {b_type}") + if a_type == b_type: + if (set(self.a_terminations) & set(self.b_terminations)): + raise ValidationError( + _("A and B terminations cannot connect to the same object.") + ) + # Run clean() on any new CableTerminations for termination in self.a_terminations: CableTermination(cable=self, cable_end='A', termination=termination).clean()