diff --git a/bookwyrm/goodreads_import.py b/bookwyrm/goodreads_import.py index d5c0ad42..1582c37a 100644 --- a/bookwyrm/goodreads_import.py +++ b/bookwyrm/goodreads_import.py @@ -1,6 +1,5 @@ ''' handle reading a csv from goodreads ''' import csv -from requests import HTTPError from bookwyrm import outgoing from bookwyrm.tasks import app @@ -24,6 +23,17 @@ def create_job(user, csv_file, include_reviews, privacy): ImportItem(job=job, index=index, data=entry).save() return job +def create_retry_job(user, original_job, items): + ''' retry items that didn't import ''' + job = ImportJob.objects.create( + user=user, + include_reviews=original_job.include_reviews, + privacy=original_job.privacy, + retry=True + ) + for item in items: + ImportItem(job=job, index=item.index, data=item.data).save() + return job def start_import(job): ''' initalizes a csv import job ''' diff --git a/bookwyrm/migrations/0010_importjob_retry.py b/bookwyrm/migrations/0010_importjob_retry.py new file mode 100644 index 00000000..21296cc4 --- /dev/null +++ b/bookwyrm/migrations/0010_importjob_retry.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.7 on 2020-11-13 15:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('bookwyrm', '0009_shelf_privacy'), + ] + + operations = [ + migrations.AddField( + model_name='importjob', + name='retry', + field=models.BooleanField(default=False), + ), + ] diff --git a/bookwyrm/models/import_job.py b/bookwyrm/models/import_job.py index 891bfd1b..3c0cfd86 100644 --- a/bookwyrm/models/import_job.py +++ b/bookwyrm/models/import_job.py @@ -48,6 +48,7 @@ class ImportJob(models.Model): default='public', choices=PrivacyLevels.choices ) + retry = models.BooleanField(default=False) class ImportItem(models.Model): @@ -100,6 +101,16 @@ class ImportItem(models.Model): return None + @property + def title(self): + ''' get the book title ''' + return self.data['Title'] + + @property + def author(self): + ''' get the book title ''' + return self.data['Author'] + @property def isbn(self): ''' pulls out the isbn13 field from the csv line data ''' diff --git a/bookwyrm/templates/import_status.html b/bookwyrm/templates/import_status.html index c1dbb26e..1c7da003 100644 --- a/bookwyrm/templates/import_status.html +++ b/bookwyrm/templates/import_status.html @@ -29,16 +29,47 @@ {% if failed_items %}