2
0
Эх сурвалжийг харах

Store the front ports on the position_stack so we can provide better feedback to the user

Sander Steffann 5 жил өмнө
parent
commit
abaf0daa6e

+ 3 - 2
netbox/dcim/models/device_components.py

@@ -124,7 +124,7 @@ class CableTermination(models.Model):
                 # many-to-one points so we can select the correct FrontPort when we reach the corresponding
                 # one-to-many point.
                 if peer_port.positions > 1:
-                    position_stack.append(termination.rear_port_position)
+                    position_stack.append(termination)
 
                 return peer_port
 
@@ -135,7 +135,8 @@ class CableTermination(models.Model):
                     if not position_stack:
                         raise CableTraceSplit(termination)
 
-                    position = position_stack.pop()
+                    front_port = position_stack.pop()
+                    position = front_port.rear_port_position
 
                     # Validate the position
                     if position not in range(1, termination.positions + 1):

+ 7 - 1
netbox/templates/dcim/cable_trace.html

@@ -90,7 +90,13 @@
             </div>
         {% elif position_stack %}
             <div class="col-md-11 col-md-offset-1">
-                <h3 class="text-warning text-center">Multiple possible paths end at this point. No connection established!</h3>
+                <h3 class="text-warning text-center">
+                    {% with last_position=position_stack|last %}
+                        Trace completed, but there is no Front Port corresponding to
+                        <a href="{{ last_position.device.get_absolute_url }}">{{ last_position.device }}</a> {{ last_position }}.<br>
+                        Therefore no end-to-end connection can be established.
+                    {% endwith %}
+                </h3>
             </div>
         {% else %}
             <div class="col-md-11 col-md-offset-1">