From 9543b5e716520c1860ee916c786331ee86a69e01 Mon Sep 17 00:00:00 2001 From: John Anderson Date: Mon, 12 Nov 2018 22:15:06 -0500 Subject: [PATCH] fixed #2584 - validation for connecting front port to corresponding rear port --- netbox/dcim/models.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index d3c18d7e2..9a0a59bb8 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -2530,9 +2530,19 @@ class Cable(ChangeLoggedModel): # A termination point cannot be connected to itself if self.termination_a == self.termination_b: - print("Validation failed: same interface") raise ValidationError("Cannot connect {} to itself".format(self.termination_a_type)) + # A front port cannot be connected to its corresponding rear port + if ( + type_a in ['frontport', 'rearport'] and + type_b in ['frontport', 'rearport'] and + ( + getattr(self.termination_a, 'rear_port', None) == self.termination_b or + getattr(self.termination_b, 'rear_port', None) == self.termination_a + ) + ): + raise ValidationError("A front port cannot be connected to it corresponding rear port") + # Check for an existing Cable connected to either termination object if self.termination_a.cable not in (None, self): raise ValidationError("{} already has a cable attached (#{})".format(