{% extends "assets/base.html" %} {% block title %}Import assets{% endblock %} {% block content %}

Bulk CSV import

Download template

Required columns: {{ required|join:", " }}. Optional: {{ optional|join:", " }}. Category and location are matched by code; dates are YYYY-MM-DD. Without the skip option, a single bad row stops the whole import.

{% csrf_token %} {% for f in form %}
{{ f.label_tag }}{{ f }}{{ f.errors }}
{% endfor %}
{% if report %}

Validation report

{% if report.header_error %}
{{ report.header_error }}
{% else %}

{{ report.total }} row(s) read, {{ report.created }} imported, {{ report.errors|length }} with errors.

{% if report.errors %}
{% for e in report.errors %}{% endfor %}
RowTagProblems
{{ e.row }}{{ e.tag }}
    {% for m in e.messages %}
  • {{ m }}
  • {% endfor %}
{% else %}
All rows valid.
{% endif %} {% endif %}{% endif %} {% endblock %}