Change how goodread import writes reviews

- adds published date
 - broadcasts review imports
 - completes review and shelve actions as it goes
 - some small connector fixes

 fixes #247
This commit is contained in:
Mouse Reeve
2020-10-29 14:29:31 -07:00
parent 7febcec229
commit a46d7f5dc7
5 changed files with 67 additions and 57 deletions

View File

@ -40,8 +40,7 @@ class ImportJob(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
created_date = models.DateTimeField(default=timezone.now)
task_id = models.CharField(max_length=100, null=True)
import_status = models.ForeignKey(
'Status', null=True, on_delete=models.PROTECT)
class ImportItem(models.Model):
''' a single line of a csv being imported '''
@ -71,6 +70,8 @@ class ImportItem(models.Model):
return books_manager.get_or_create_book(search_result.key)
except ConnectorException:
pass
return None
def get_book_from_title_author(self):
''' search by title and author '''
@ -84,6 +85,8 @@ class ImportItem(models.Model):
return books_manager.get_or_create_book(search_result.key)
except ConnectorException:
pass
return None
@property
def isbn(self):
@ -95,6 +98,7 @@ class ImportItem(models.Model):
''' the goodreads shelf field '''
if self.data['Exclusive Shelf']:
return GOODREADS_SHELVES.get(self.data['Exclusive Shelf'])
return None
@property
def review(self):
@ -111,12 +115,14 @@ class ImportItem(models.Model):
''' when the book was added to this dataset '''
if self.data['Date Added']:
return dateutil.parser.parse(self.data['Date Added'])
return None
@property
def date_read(self):
''' the date a book was completed '''
if self.data['Date Read']:
return dateutil.parser.parse(self.data['Date Read'])
return None
@property
def reads(self):
@ -126,6 +132,7 @@ class ImportItem(models.Model):
return [ReadThrough(start_date=self.date_added)]
if self.date_read:
return [ReadThrough(
start_date=self.date_added,
finish_date=self.date_read,
)]
return []