forked from mirrors/bookwyrm
Do some checks to make sure we've got a csv file on import.
Fixes #104.
This commit is contained in:
parent
4f9edae05a
commit
aec8e5c536
2 changed files with 11 additions and 4 deletions
|
@ -14,6 +14,8 @@ MAX_ENTRIES = 20
|
|||
def create_job(user, csv_file):
|
||||
job = ImportJob.objects.create(user=user)
|
||||
for index, entry in enumerate(list(csv.DictReader(csv_file))[:MAX_ENTRIES]):
|
||||
if not all(x in entry for x in ('ISBN13', 'Title', 'Author')):
|
||||
raise ValueError("Author, title, and isbn must be in data.")
|
||||
ImportItem(job=job, index=index, data=entry).save()
|
||||
return job
|
||||
|
||||
|
|
|
@ -418,10 +418,15 @@ def import_data(request):
|
|||
''' ingest a goodreads csv '''
|
||||
form = forms.ImportForm(request.POST, request.FILES)
|
||||
if form.is_valid():
|
||||
job = goodreads_import.create_job(
|
||||
request.user,
|
||||
TextIOWrapper(request.FILES['csv_file'], encoding=request.encoding)
|
||||
)
|
||||
try:
|
||||
job = goodreads_import.create_job(
|
||||
request.user,
|
||||
TextIOWrapper(
|
||||
request.FILES['csv_file'],
|
||||
encoding=request.encoding)
|
||||
)
|
||||
except (UnicodeDecodeError, ValueError):
|
||||
return HttpResponseBadRequest('Not a valid csv file')
|
||||
goodreads_import.start_import(job)
|
||||
return redirect('/import_status/%d' % (job.id,))
|
||||
return HttpResponseBadRequest()
|
||||
|
|
Loading…
Reference in a new issue