{% 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 %}

  <div class="col-lg-12 mb-3">
    <div class="card card-body shadow-sm p-4">
      {% 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 %}
    </div>
  </div>

  <div class="col-lg-12">
    {% if result %}

    {% if result.has_errors %}
    <div class="card shadow-sm">
      <div class="card-header">
        <h3 class="mb-0">{% trans "Errors" %}</h3>
        <p class="small mb-0">{% trans "Please correct these errors in your data where possible, then reupload it using the form above." %}</p>
      </div>
      <div class="card-body">
        <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>
      </div>
    </div>
    {% elif result.has_validation_errors %}
      
    <div class="card shadow-sm">
      <div class="card-header">
        <h3 class="mb-0">{% trans "Some rows failed to validate" %}</h3>
        <p class="small mb-0">{% trans "Please correct these errors in your data where possible, then reupload it using the form above." %}</p>
      </div>
      <div class="table-responsive">
        <table class="import-preview table mb-0">
          <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>
      </div>
    </div>
    {% else %}
      <div class="card shadow-sm">
        <div class="card-header">
          <h3 class="mb-0">{% trans "Preview" %}</h3>
        </div>
        <div class="table-responsive">
          <table class="import-preview table mb-0">
            <thead>
              <tr>
                <th></th>
                {% for field in result.diff_headers %}
                  <th>{{ field }}</th>
                {% endfor %}
              </tr>
            </thead>
            {% for row in result.valid_rows %}
              <tr class="{{ row.import_type }}">
                <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>
        </div>
      </div>
    {% endif %}

  {% endif %}
  </div>

{% endblock %}
