1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Define is_path_endpoint and is_connected_endpoint separately, as a CableTermination is a possible connected endpoint but not always the end of the path.

This commit is contained in:
Sander Steffann
2020-06-17 17:11:28 +02:00
parent 3876efe494
commit 715ddc6b02
3 changed files with 18 additions and 1 deletions

View File

@ -303,6 +303,9 @@ class CircuitTermination(CableTermination):
# Paths do not end on cable terminations, they continue at the other end of the circuit
is_path_endpoint = False
# But they are a possible connected endpoint
is_connected_endpoint = True
class Meta:
ordering = ['circuit', 'term_side']
unique_together = ['circuit', 'term_side']

View File

@ -86,8 +86,12 @@ class CableTermination(models.Model):
object_id_field='termination_b_id'
)
# Whether this class is always an endpoint for cable traces
is_path_endpoint = True
# Whether this class can be a connected endpoint
is_connected_endpoint = True
class Meta:
abstract = True
@ -895,8 +899,13 @@ class FrontPort(CableTermination, ComponentModel):
tags = TaggableManager(through=TaggedItem)
csv_headers = ['device', 'name', 'type', 'rear_port', 'rear_port_position', 'description']
# Whether this class is always an endpoint for cable traces
is_path_endpoint = False
# Whether this class can be a connected endpoint
is_connected_endpoint = False
class Meta:
ordering = ('device', '_name')
unique_together = (
@ -963,8 +972,13 @@ class RearPort(CableTermination, ComponentModel):
tags = TaggableManager(through=TaggedItem)
csv_headers = ['device', 'name', 'type', 'positions', 'description']
# Whether this class is always an endpoint for cable traces
is_path_endpoint = False
# Whether this class can be a connected endpoint
is_connected_endpoint = False
class Meta:
ordering = ('device', '_name')
unique_together = ('device', 'name')

View File

@ -63,7 +63,7 @@ def update_connected_endpoints(instance, **kwargs):
endpoint_a = path[0][0]
endpoint_b = path[-1][2] if not split_ends and not position_stack else None
if getattr(endpoint_a, 'is_path_endpoint', False) and getattr(endpoint_b, 'is_path_endpoint', False):
if getattr(endpoint_a, 'is_connected_endpoint', False) and getattr(endpoint_b, 'is_connected_endpoint', False):
logger.debug("Updating path endpoints: {} <---> {}".format(endpoint_a, endpoint_b))
endpoint_a.connected_endpoint = endpoint_b
endpoint_a.connection_status = path_status