From 3c44732ebfcfe65a059980d57d26b5ea98313e1e Mon Sep 17 00:00:00 2001 From: yalef Date: Mon, 30 Oct 2023 17:54:04 +0500 Subject: [PATCH 1/2] Extend import results template --- HISTORY.rst | 1 + .../css/admin/import_result_diff.css | 116 ++++++++++++++++++ .../celery_import_results.html | 59 +++++++-- 3 files changed, 167 insertions(+), 9 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index dcbb37e..1206331 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -5,6 +5,7 @@ History 0.4.2 (2023-10-20) ------------------ * Add base model for `ImportJob` and `ExportJob` +* Extend import results template: show validation errors in table 0.4.1 (2023-09-25) ------------------ diff --git a/import_export_extensions/static/import_export_extensions/css/admin/import_result_diff.css b/import_export_extensions/static/import_export_extensions/css/admin/import_result_diff.css index 2fde93e..0954bfe 100644 --- a/import_export_extensions/static/import_export_extensions/css/admin/import_result_diff.css +++ b/import_export_extensions/static/import_export_extensions/css/admin/import_result_diff.css @@ -4,3 +4,119 @@ ins { del { color: black; } + +.import-preview .errors { + position: relative; +} + +.validation-error-count { + display: inline-block; + background-color: #e40000; + border-radius: 6px; + color: white; + font-size: 0.9em; + position: relative; + font-weight: bold; + margin-top: -2px; + padding: 0.2em 0.4em; +} + +.validation-error-container { + position: absolute; + opacity: 0; + pointer-events: none; + background-color: #ffc1c1; + padding: 14px 15px 10px; + top: 25px; + margin: 0 0 20px 0; + width: 200px; + z-index: 2; +} + +table.import-preview tr.skip { + background-color: #d2d2d2; +} + +table.import-preview tr.new { + background-color: #bdd8b2; +} + +table.import-preview tr.delete { + background-color: #f9bebf; +} + +table.import-preview tr.update { + background-color: #fdfdcf; +} + +.import-preview td:hover .validation-error-count { + z-index: 3; +} +.import-preview td:hover .validation-error-container { + opacity: 1; + pointer-events: auto; +} + +.validation-error-list { + margin: 0; + padding: 0; +} + +.validation-error-list li { + list-style: none; + margin: 0; +} + +.validation-error-list > li > ul { + margin: 8px 0; + padding: 0; +} + +.validation-error-list > li > ul > li { + padding: 0; + margin: 0 0 10px; + line-height: 1.28em; +} + +.validation-error-field-label { + display: block; + border-bottom: 1px solid #e40000; + color: #e40000; + text-transform: uppercase; + font-weight: bold; + font-size: 0.85em; +} + +@media (prefers-color-scheme: dark) { + table.import-preview tr.skip { + background-color: #2d2d2d; + } + + table.import-preview tr.new { + background-color: #42274d; + } + + table.import-preview tr.delete { + background-color: #064140; + } + + table.import-preview tr.update { + background-color: #020230; + } + + .validation-error-container { + background-color: #003e3e; + } + + /* + these declarations are necessary to forcibly override the + formatting applied by the diff-match-patch python library + */ + table.import-preview td ins { + background-color: #190019 !important; + } + + table.import-preview td del { + background-color: #001919 !important; + } +} diff --git a/import_export_extensions/templates/admin/import_export_extensions/celery_import_results.html b/import_export_extensions/templates/admin/import_export_extensions/celery_import_results.html index e2f0f28..d2fd736 100644 --- a/import_export_extensions/templates/admin/import_export_extensions/celery_import_results.html +++ b/import_export_extensions/templates/admin/import_export_extensions/celery_import_results.html @@ -99,16 +99,57 @@

{% trans "Errors" %}

{% endfor %} {% endfor %} {% for invalid_row in result.invalid_rows %} -
  • - {% trans "Row number" %}: {{ invalid_row.number }}
    - {% for field, errors in invalid_row.error_dict.items %} - {{ field }} -
    - {% for error in errors %} - {{ error }}
    +

    {% trans "Some rows failed to validate" %}

    + +

    {% trans "Please correct these errors in your data where possible, then reupload it using the form above." %}

    + + + + + + {% for field in result.diff_headers %} + + {% endfor %} + + + + {% for row in result.invalid_rows %} + + + + {% for field in row.values %} + + {% endfor %} + {% endfor %} - {% endfor %} - + +
    {% trans "Row" %}{% trans "Errors" %}{{ field }}
    {{ row.number }} + {{ row.error_count }} +
    +
      + {% for field_name, error_list in row.field_specific_errors.items %} +
    • + {{ field_name }} +
        + {% for error in error_list %} +
      • {{ error }}
      • + {% endfor %} +
      +
    • + {% endfor %} + {% if row.non_field_specific_errors %} +
    • + {% trans "Non field specific" %} +
        + {% for error in row.non_field_specific_errors %} +
      • {{ error }}
      • + {% endfor %} +
      +
    • + {% endif %} +
    +
    +
    {{ field }}
    {% endfor %} {% endif %} From ad6f02757f866eaec3939bc1755c359f733ca5e0 Mon Sep 17 00:00:00 2001 From: Vladislav Romaschenko Date: Thu, 2 Nov 2023 13:00:01 +0500 Subject: [PATCH 2/2] Reuse import-export css --- .../css/admin/import_result_diff.css | 116 ------------------ .../celery_import_results.html | 1 + 2 files changed, 1 insertion(+), 116 deletions(-) diff --git a/import_export_extensions/static/import_export_extensions/css/admin/import_result_diff.css b/import_export_extensions/static/import_export_extensions/css/admin/import_result_diff.css index 0954bfe..2fde93e 100644 --- a/import_export_extensions/static/import_export_extensions/css/admin/import_result_diff.css +++ b/import_export_extensions/static/import_export_extensions/css/admin/import_result_diff.css @@ -4,119 +4,3 @@ ins { del { color: black; } - -.import-preview .errors { - position: relative; -} - -.validation-error-count { - display: inline-block; - background-color: #e40000; - border-radius: 6px; - color: white; - font-size: 0.9em; - position: relative; - font-weight: bold; - margin-top: -2px; - padding: 0.2em 0.4em; -} - -.validation-error-container { - position: absolute; - opacity: 0; - pointer-events: none; - background-color: #ffc1c1; - padding: 14px 15px 10px; - top: 25px; - margin: 0 0 20px 0; - width: 200px; - z-index: 2; -} - -table.import-preview tr.skip { - background-color: #d2d2d2; -} - -table.import-preview tr.new { - background-color: #bdd8b2; -} - -table.import-preview tr.delete { - background-color: #f9bebf; -} - -table.import-preview tr.update { - background-color: #fdfdcf; -} - -.import-preview td:hover .validation-error-count { - z-index: 3; -} -.import-preview td:hover .validation-error-container { - opacity: 1; - pointer-events: auto; -} - -.validation-error-list { - margin: 0; - padding: 0; -} - -.validation-error-list li { - list-style: none; - margin: 0; -} - -.validation-error-list > li > ul { - margin: 8px 0; - padding: 0; -} - -.validation-error-list > li > ul > li { - padding: 0; - margin: 0 0 10px; - line-height: 1.28em; -} - -.validation-error-field-label { - display: block; - border-bottom: 1px solid #e40000; - color: #e40000; - text-transform: uppercase; - font-weight: bold; - font-size: 0.85em; -} - -@media (prefers-color-scheme: dark) { - table.import-preview tr.skip { - background-color: #2d2d2d; - } - - table.import-preview tr.new { - background-color: #42274d; - } - - table.import-preview tr.delete { - background-color: #064140; - } - - table.import-preview tr.update { - background-color: #020230; - } - - .validation-error-container { - background-color: #003e3e; - } - - /* - these declarations are necessary to forcibly override the - formatting applied by the diff-match-patch python library - */ - table.import-preview td ins { - background-color: #190019 !important; - } - - table.import-preview td del { - background-color: #001919 !important; - } -} diff --git a/import_export_extensions/templates/admin/import_export_extensions/celery_import_results.html b/import_export_extensions/templates/admin/import_export_extensions/celery_import_results.html index d2fd736..4958acd 100644 --- a/import_export_extensions/templates/admin/import_export_extensions/celery_import_results.html +++ b/import_export_extensions/templates/admin/import_export_extensions/celery_import_results.html @@ -15,6 +15,7 @@ + {% endblock %}