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

Changes to template, view and CablePath class to

indicate to users whether the cable length is
accurate or not.
This commit is contained in:
Chris Mills
2021-01-22 16:45:08 +00:00
parent 5e962719ca
commit 02e8979178
3 changed files with 12 additions and 4 deletions

View File

@ -480,13 +480,17 @@ class CablePath(models.Model):
def get_total_length(self):
"""
Return the sum of the length of each cable in the path.
Return a tuple containing the sum of the length of each cable in the path
and a flag indicating whether the length is definitive.
"""
cable_ids = [
# Starting from the first element, every third element in the path should be a Cable
decompile_path_node(self.path[i])[1] for i in range(0, len(self.path), 3)
]
return Cable.objects.filter(id__in=cable_ids).aggregate(total=Sum('_abs_length'))['total']
cables = Cable.objects.filter(id__in=cable_ids, _abs_length__isnull=False)
total_length = cables.aggregate(total=Sum('_abs_length'))['total']
is_definitive = len(cables) == len(cable_ids)
return (total_length, is_definitive)
def get_split_nodes(self):
"""

View File

@ -2134,10 +2134,14 @@ class PathTraceView(generic.ObjectView):
else:
path = related_paths.first()
# Get the total length of the cable and whether the length is definitive (fully defined)
total_length, is_definitive = path.get_total_length if path else (None, False)
return {
'path': path,
'related_paths': related_paths,
'total_length': path.get_total_length() if path else None,
'total_length': total_length,
'is_definitive': is_definitive
}

View File

@ -69,7 +69,7 @@
<h5>Total segments: {{ traced_path|length }}</h5>
<h5>Total length:
{% if total_length %}
{{ total_length|floatformat:"-2" }} Meters /
{% if not is_definitive %}&gt;{% endif %}{{ total_length|floatformat:"-2" }} Meters /
{{ total_length|meters_to_feet|floatformat:"-2" }} Feet
{% else %}
<span class="text-muted">N/A</span>