172 lines
5.2 KiB
HTML
172 lines
5.2 KiB
HTML
{% extends "admin/import_export/base.html" %}
|
|
{% load i18n %}
|
|
{% load admin_urls %}
|
|
{% load import_export_tags %}
|
|
{% load static %}
|
|
|
|
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "import_export/import.css" %}" />{% endblock %}
|
|
|
|
{% block breadcrumbs_last %}
|
|
{% trans "Import" %}
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
|
|
{% if confirm_form %}
|
|
<form action="{% url opts|admin_urlname:"process_import" %}" method="POST">
|
|
{% csrf_token %}
|
|
{{ confirm_form.as_p }}
|
|
<p>
|
|
{% trans "Below is a preview of data to be imported. If you are satisfied with the results, click 'Confirm import'" %}
|
|
</p>
|
|
<div class="submit-row">
|
|
<input type="submit" class="default" name="confirm" value="{% trans "Confirm import" %}">
|
|
</div>
|
|
</form>
|
|
{% else %}
|
|
<form action="" method="post" enctype="multipart/form-data">
|
|
{% csrf_token %}
|
|
|
|
<p>
|
|
{% trans "This importer will import the following fields: " %}
|
|
<code>{{ fields|join:", " }}</code>
|
|
</p>
|
|
|
|
<fieldset class="module aligned">
|
|
{% for field in form %}
|
|
<div class="form-row">
|
|
{{ field.errors }}
|
|
|
|
{{ field.label_tag }}
|
|
|
|
{{ field }}
|
|
|
|
{% if field.field.help_text %}
|
|
<p class="help">{{ field.field.help_text|safe }}</p>
|
|
{% endif %}
|
|
</div>
|
|
{% endfor %}
|
|
</fieldset>
|
|
|
|
<div class="submit-row">
|
|
<input type="submit" class="default" value="{% trans "Submit" %}">
|
|
</div>
|
|
</form>
|
|
{% endif %}
|
|
|
|
{% if result %}
|
|
|
|
{% if result.has_errors %}
|
|
|
|
<h2>{% trans "Errors" %}</h2>
|
|
<ul>
|
|
{% for error in result.base_errors %}
|
|
<li>
|
|
{{ error.error }}
|
|
<div class="traceback">{{ error.traceback|linebreaks }}</div>
|
|
</li>
|
|
{% endfor %}
|
|
{% for line, errors in result.row_errors %}
|
|
{% for error in errors %}
|
|
<li>
|
|
{% trans "Line number" %}: {{ line }} - {{ error.error }}
|
|
<div><code>{{ error.row.values|join:", " }}</code></div>
|
|
<div class="traceback">{{ error.traceback|linebreaks }}</div>
|
|
</li>
|
|
{% endfor %}
|
|
{% endfor %}
|
|
</ul>
|
|
|
|
{% elif result.has_validation_errors %}
|
|
|
|
<h2>{% trans "Some rows failed to validate" %}</h2>
|
|
|
|
<p>{% trans "Please correct these errors in your data where possible, then reupload it using the form above." %}</p>
|
|
|
|
<table class="import-preview">
|
|
<thead>
|
|
<tr>
|
|
<th>{% trans "Row" %}</th>
|
|
<th>{% trans "Errors" %}</th>
|
|
{% for field in result.diff_headers %}
|
|
<th>{{ field }}</th>
|
|
{% endfor %}
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for row in result.invalid_rows %}
|
|
<tr>
|
|
<td>{{ row.number }} </td>
|
|
<td class="errors">
|
|
<span class="validation-error-count">{{ row.error_count }}</span>
|
|
<div class="validation-error-container">
|
|
<ul class="validation-error-list">
|
|
{% for field_name, error_list in row.field_specific_errors.items %}
|
|
<li>
|
|
<span class="validation-error-field-label">{{ field_name }}</span>
|
|
<ul>
|
|
{% for error in error_list %}
|
|
<li>{{ error }}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</li>
|
|
{% endfor %}
|
|
{% if row.non_field_specific_errors %}
|
|
<li>
|
|
<span class="validation-error-field-label">{% trans "Non field specific" %}</span>
|
|
<ul>
|
|
{% for error in row.non_field_specific_errors %}
|
|
<li>{{ error }}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</li>
|
|
{% endif %}
|
|
</ul>
|
|
</div>
|
|
</td>
|
|
{% for field in row.values %}
|
|
<td>{{ field }}</td>
|
|
{% endfor %}
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
|
|
{% else %}
|
|
|
|
<h2>{% trans "Preview" %}</h2>
|
|
|
|
<table class="import-preview">
|
|
<thead>
|
|
<tr>
|
|
<th></th>
|
|
{% for field in result.diff_headers %}
|
|
<th>{{ field }}</th>
|
|
{% endfor %}
|
|
</tr>
|
|
</thead>
|
|
{% for row in result.valid_rows %}
|
|
<tr>
|
|
<td class="import-type">
|
|
{% if row.import_type == 'new' %}
|
|
{% trans "New" %}
|
|
{% elif row.import_type == 'skip' %}
|
|
{% trans "Skipped" %}
|
|
{% elif row.import_type == 'delete' %}
|
|
{% trans "Delete" %}
|
|
{% elif row.import_type == 'update' %}
|
|
{% trans "Update" %}
|
|
{% endif %}
|
|
</td>
|
|
{% for field in row.diff %}
|
|
<td>{{ field }}</td>
|
|
{% endfor %}
|
|
</tr>
|
|
{% endfor %}
|
|
</table>
|
|
|
|
{% endif %}
|
|
|
|
{% endif %}
|
|
{% endblock %}
|