From f25e2a19225d31f1be72663aeb25e715992e78da Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 9 Dec 2019 15:42:04 -0500 Subject: [PATCH] Fixes #3644: Fix exception when connecting a cable to a RearPort with no corresponding FrontPort --- docs/release-notes/version-2.6.md | 1 + netbox/dcim/models.py | 6 ++++++ netbox/dcim/signals.py | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-2.6.md b/docs/release-notes/version-2.6.md index 66e047661..3b0ae8ad3 100644 --- a/docs/release-notes/version-2.6.md +++ b/docs/release-notes/version-2.6.md @@ -11,6 +11,7 @@ ## Bug Fixes * [#3312](https://github.com/netbox-community/netbox/issues/3312) - Fix validation error when editing power cables in bulk +* [#3644](https://github.com/netbox-community/netbox/issues/3644) - Fix exception when connecting a cable to a RearPort with no corresponding FrontPort * [#3669](https://github.com/netbox-community/netbox/issues/3669) - Include `weight` field in prefix/VLAN role form * [#3674](https://github.com/netbox-community/netbox/issues/3674) - Include comments on PowerFeed view * [#3679](https://github.com/netbox-community/netbox/issues/3679) - Fix link for assigned ipaddress in interface page diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index b1b9a70bf..ad2a3d769 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -98,6 +98,8 @@ class CableTermination(models.Model): object_id_field='termination_b_id' ) + is_path_endpoint = True + class Meta: abstract = True @@ -2444,6 +2446,8 @@ class FrontPort(CableTermination, ComponentModel): validators=[MinValueValidator(1), MaxValueValidator(64)] ) + is_path_endpoint = False + objects = NaturalOrderingManager() tags = TaggableManager(through=TaggedItem) @@ -2506,6 +2510,8 @@ class RearPort(CableTermination, ComponentModel): validators=[MinValueValidator(1), MaxValueValidator(64)] ) + is_path_endpoint = False + objects = NaturalOrderingManager() tags = TaggableManager(through=TaggedItem) diff --git a/netbox/dcim/signals.py b/netbox/dcim/signals.py index c1aabf64d..71ee7ec3c 100644 --- a/netbox/dcim/signals.py +++ b/netbox/dcim/signals.py @@ -45,7 +45,7 @@ def update_connected_endpoints(instance, **kwargs): # Check if this Cable has formed a complete path. If so, update both endpoints. endpoint_a, endpoint_b, path_status = instance.get_path_endpoints() - if endpoint_a is not None and endpoint_b is not None: + if getattr(endpoint_a, 'is_path_endpoint', False) and getattr(endpoint_b, 'is_path_endpoint', False): endpoint_a.connected_endpoint = endpoint_b endpoint_a.connection_status = path_status endpoint_a.save()