{% extends "vantage/base.html" %} {% load static vantage i18n %} {% block head %} {% endblock %} {% block content %}

{{ page_title|capfirst }}

{% blocktranslate trimmed %}Upload a CSV. You will map its columns and see exactly what would change before anything is written.{% endblocktranslate %}

{% translate "Cancel" %}
{% comment %} The three steps are named up front. An import is a commitment against production, and knowing there is a preview between "choose file" and "written" is what makes people willing to try it at all. {% endcomment %}
  1. 1 {% translate "Upload" %}
  2. 2 {% translate "Map columns" %}
  3. 3 {% translate "Preview" %}
{% if error %} {% endif %}
{% csrf_token %}

{% translate "Choose a file" %}

{% blocktranslate trimmed %}Up to {{ max_mb }} MB and {{ max_rows }} rows. The first row must be the column names. Anything larger belongs in a management command — this runs in one request.{% endblocktranslate %}

{% translate "Cancel" %}

{% translate "Columns this import understands" %}

{% blocktranslate trimmed with plural_label=panel.get_label_plural|lower %}A file exported from the {{ plural_label }} list will already match. Column names are matched loosely — case, spaces and underscores are ignored, and a field's label works as well as its name. Anything unrecognised can be mapped by hand on the next screen.{% endblocktranslate %}

{% comment %} Read-only fields, files and many-to-many relations are absent on purpose. Saying so here saves the reader from concluding the list is buggy when their column is missing. {% endcomment %}

{% blocktranslate trimmed %}Read-only fields, file and image uploads, and many-to-many relations are not importable. A column named after one of them is ignored, never written.{% endblocktranslate %}

{% endblock %}