From e9a7bbe48c90a6b505389082bec0ee461404b796 Mon Sep 17 00:00:00 2001 From: Scot Hacker Date: Mon, 1 Apr 2019 23:41:04 -0700 Subject: [PATCH] Improve error handling for web upload of bad CSV --- todo/operations/csv_importer.py | 4 ++-- todo/views/import_csv.py | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/todo/operations/csv_importer.py b/todo/operations/csv_importer.py index 9fb3b18..7b847fa 100644 --- a/todo/operations/csv_importer.py +++ b/todo/operations/csv_importer.py @@ -54,10 +54,10 @@ class CSVImporter: "Priority", ] if header != expected: - self.results.get("summaries").append( + self.errors.append( f"Inbound data does not have expected columns.\nShould be: {expected}" ) - return self.results + return for row in csv_reader: self.line_count += 1 diff --git a/todo/views/import_csv.py b/todo/views/import_csv.py index 189eb58..def3564 100644 --- a/todo/views/import_csv.py +++ b/todo/views/import_csv.py @@ -24,6 +24,12 @@ def import_csv(request) -> HttpResponse: importer = CSVImporter() results = importer.upsert(filepath) - ctx["results"] = results + + ctx["results"] = None + if results: + ctx["results"] = results + else: + messages.error(request, "Could not parse provided CSV file.") + return redirect(reverse("todo:import_csv")) return render(request, "todo/import_csv.html", context=ctx)