From ad0a1aa44afe410e66030d8dfa173f1e2c37ade5 Mon Sep 17 00:00:00 2001 From: Scot Hacker Date: Mon, 1 Apr 2019 23:17:57 -0700 Subject: [PATCH] Don't crash if CSV web importer does not receive a file --- todo/views/import_csv.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/todo/views/import_csv.py b/todo/views/import_csv.py index 50db211..189eb58 100644 --- a/todo/views/import_csv.py +++ b/todo/views/import_csv.py @@ -1,10 +1,12 @@ +from django.contrib import messages from django.contrib.auth.decorators import login_required, user_passes_test from django.http import HttpResponse -from django.shortcuts import render -from todo.operations.csv_importer import CSVImporter +from django.shortcuts import redirect, render, reverse +from todo.operations.csv_importer import CSVImporter from todo.utils import staff_check + @login_required @user_passes_test(staff_check) def import_csv(request) -> HttpResponse: @@ -14,7 +16,12 @@ def import_csv(request) -> HttpResponse: ctx = {} if request.method == "POST": - filepath = request.FILES.get('csvfile') + filepath = request.FILES.get("csvfile") + + if not filepath: + messages.error(request, "You must supply a CSV file to import.") + return redirect(reverse("todo:import_csv")) + importer = CSVImporter() results = importer.upsert(filepath) ctx["results"] = results