{% extends 'base/layout.html' %} {% load helpers %} {% block title %}Batch cabling (CSV){% endblock %} {% block content %}

Batch cabling

{% csrf_token %}
Header: src_device,dest_device,src_port,dest_port,media
{% if form.non_field_errors %}
{{ form.non_field_errors }}
{% endif %}
{% if lines %}

{% if executed %}Batch result{% else %}Preview — collision-free allocation{% endif %}

{% for line in lines %} {% endfor %}
#SourceDestinationMediaStatusPathDetail
{{ line.n }} {{ line.row.src_device }} : {{ line.row.src_port }} {{ line.row.dest_device }} : {{ line.row.dest_port }} {{ line.row.media }} {% if line.row.error %} error {% elif line.plan %} {% if line.plan.status == 'found' or line.plan.status == 'direct_intra_rack' %} {{ line.plan.status }} {% elif line.plan.status == 'propose_direct_no_path' or line.plan.status == 'exhausted' %} {{ line.plan.status }} {% else %} {{ line.plan.status }} {% endif %} {% endif %} {% if line.plan.bridges %} ╌ bridge ×{{ line.plan.bridges|length }} {% endif %} {% if line.plan.overflow %} ⤢ overflow ×{{ line.plan.overflow|length }} {% endif %} {% if line.result.job %} → {{ line.result.job|linkify }} {% endif %} {% if line.plan.path_steps %} {% for step in line.plan.path_steps %}{{ step.rack }}{% if step.link == 'bridge' %} {% elif step.link == 'trunk' %} {% endif %}{% endfor %} {% elif line.plan.path_names %} {{ line.plan.path_names|join:" › " }} {% endif %} {% if line.row.error %}{{ line.row.error }}{% elif line.plan %}{{ line.plan.reason }}{% endif %}
{% if not executed %} {% endif %}
{% endif %} {% endblock %}