Skip to content

Commit

Permalink
Update handling of skipped errors
Browse files Browse the repository at this point in the history
  • Loading branch information
yalef committed Nov 22, 2023
1 parent 82e75b4 commit 6632a09
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 6 deletions.
9 changes: 5 additions & 4 deletions import_export_extensions/resources.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import typing
from enum import Enum

from django.core.exceptions import ValidationError
from django.db.models import QuerySet
from django.utils import timezone
from django.utils.functional import classproperty
Expand Down Expand Up @@ -43,8 +44,8 @@ class TaskState(Enum):
class SkippedErrorsRowResult(results.RowResult):
"""Custom row result class with ability to store skipped errors in row."""
def __init__(self, *args, **kwargs):
self.non_field_skipped_errors: list[str] = []
self.field_skipped_errors: dict[str, str] = dict()
self.non_field_skipped_errors: list[Error] = []
self.field_skipped_errors: dict[str, list[ValidationError]] = dict()
super().__init__()

@property
Expand Down Expand Up @@ -205,11 +206,11 @@ def import_row(
imported_row.diff.append(row.get(field.column_name, ""))

imported_row.non_field_skipped_errors.extend(
str(error.error) for error in imported_row.errors
imported_row.errors,
)
if imported_row.validation_error is not None:
imported_row.field_skipped_errors.update(
**imported_row.validation_error.message_dict,
**imported_row.validation_error.error_dict,
)
imported_row.errors = []
imported_row.validation_error = None
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,11 +182,15 @@ <h2>
<span class="validation-error-count">{{ row.skipped_errors_count}}</span>
<div class="validation-error-container">
<ul class="validation-error-list">
{% for field_name, error_message in row.field_skipped_errors.items %}
{% for field_name, errors in row.field_skipped_errors.items %}
<li>
<span class="validation-error-field-label">{{ field_name }}</span>
<ul>
<li>{{ error_message }}</li>
{% for error in errors %}
<li>
{{ error }}
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
Expand Down

0 comments on commit 6632a09

Please sign in to comment.