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()