diff --git a/bookwyrm/importers/importer.py b/bookwyrm/importers/importer.py index a3cfba198..388dcf91f 100644 --- a/bookwyrm/importers/importer.py +++ b/bookwyrm/importers/importer.py @@ -37,6 +37,9 @@ class Importer: """check over a csv and creates a database entry for the job""" csv_reader = csv.DictReader(csv_file, delimiter=self.delimiter) rows = enumerate(list(csv_reader)) + if rows: + raise ValueError("CSV file is empty") + job = ImportJob.objects.create( user=user, include_reviews=include_reviews, diff --git a/bookwyrm/templates/import/import.html b/bookwyrm/templates/import/import.html index 141e5671e..325caa92b 100644 --- a/bookwyrm/templates/import/import.html +++ b/bookwyrm/templates/import/import.html @@ -8,6 +8,12 @@

{% trans "Import Books" %}

+ {% if invalid %} +
+ {% trans "Not a valid CSV file" %} +
+ {% endif %} + {% if site.imports_enabled %} {% if recent_avg_hours or recent_avg_minutes %}
diff --git a/bookwyrm/views/imports/import_data.py b/bookwyrm/views/imports/import_data.py index 4956bfb7d..f0bb2e698 100644 --- a/bookwyrm/views/imports/import_data.py +++ b/bookwyrm/views/imports/import_data.py @@ -11,7 +11,6 @@ from django.shortcuts import redirect from django.template.response import TemplateResponse from django.utils import timezone from django.utils.decorators import method_decorator -from django.utils.translation import gettext_lazy as _ from django.views import View from bookwyrm import forms, models @@ -30,7 +29,7 @@ from bookwyrm.utils.cache import get_or_set class Import(View): """import view""" - def get(self, request): + def get(self, request, invalid=False): """load import page""" jobs = models.ImportJob.objects.filter(user=request.user).order_by( "-created_date" @@ -43,6 +42,7 @@ class Import(View): "page_range": paginated.get_elided_page_range( page.number, on_each_side=2, on_ends=1 ), + "invalid": invalid, } seconds = get_or_set("avg-import-time", get_average_import_time, timeout=86400) @@ -88,7 +88,7 @@ class Import(View): privacy, ) except (UnicodeDecodeError, ValueError, KeyError): - return HttpResponseBadRequest(_("Not a valid csv file")) + return self.get(request, invalid=True) job.start_job()