forked from mirrors/bookwyrm
Merge pull request #506 from mouse-reeve/readthrough-dupes
Don't double-add readthroughs in re-import
This commit is contained in:
commit
9c994e893b
2 changed files with 38 additions and 0 deletions
|
@ -180,6 +180,13 @@ def handle_imported_book(user, item, include_reviews, privacy):
|
||||||
broadcast(user, shelf_book.to_add_activity(user), privacy=privacy)
|
broadcast(user, shelf_book.to_add_activity(user), privacy=privacy)
|
||||||
|
|
||||||
for read in item.reads:
|
for read in item.reads:
|
||||||
|
# check for an existing readthrough with the same dates
|
||||||
|
if models.ReadThrough.objects.filter(
|
||||||
|
user=user, book=item.book,
|
||||||
|
start_date=read.start_date,
|
||||||
|
finish_date=read.finish_date
|
||||||
|
).exists():
|
||||||
|
continue
|
||||||
read.book = item.book
|
read.book = item.book
|
||||||
read.user = user
|
read.user = user
|
||||||
read.save()
|
read.save()
|
||||||
|
|
|
@ -323,6 +323,37 @@ class Outgoing(TestCase):
|
||||||
self.assertEqual(readthrough.finish_date.day, 25)
|
self.assertEqual(readthrough.finish_date.day, 25)
|
||||||
|
|
||||||
|
|
||||||
|
def test_handle_import_twice(self):
|
||||||
|
''' re-importing books '''
|
||||||
|
shelf = self.local_user.shelf_set.filter(identifier='read').first()
|
||||||
|
import_job = models.ImportJob.objects.create(user=self.local_user)
|
||||||
|
datafile = pathlib.Path(__file__).parent.joinpath('data/goodreads.csv')
|
||||||
|
csv_file = open(datafile, 'r')
|
||||||
|
for index, entry in enumerate(list(csv.DictReader(csv_file))):
|
||||||
|
import_item = models.ImportItem.objects.create(
|
||||||
|
job_id=import_job.id, index=index, data=entry, book=self.book)
|
||||||
|
break
|
||||||
|
|
||||||
|
with patch('bookwyrm.broadcast.broadcast_task.delay'):
|
||||||
|
outgoing.handle_imported_book(
|
||||||
|
self.local_user, import_item, False, 'public')
|
||||||
|
outgoing.handle_imported_book(
|
||||||
|
self.local_user, import_item, False, 'public')
|
||||||
|
|
||||||
|
shelf.refresh_from_db()
|
||||||
|
self.assertEqual(shelf.books.first(), self.book)
|
||||||
|
|
||||||
|
readthrough = models.ReadThrough.objects.get(user=self.local_user)
|
||||||
|
self.assertEqual(readthrough.book, self.book)
|
||||||
|
# I can't remember how to create dates and I don't want to look it up.
|
||||||
|
self.assertEqual(readthrough.start_date.year, 2020)
|
||||||
|
self.assertEqual(readthrough.start_date.month, 10)
|
||||||
|
self.assertEqual(readthrough.start_date.day, 21)
|
||||||
|
self.assertEqual(readthrough.finish_date.year, 2020)
|
||||||
|
self.assertEqual(readthrough.finish_date.month, 10)
|
||||||
|
self.assertEqual(readthrough.finish_date.day, 25)
|
||||||
|
|
||||||
|
|
||||||
def test_handle_imported_book_review(self):
|
def test_handle_imported_book_review(self):
|
||||||
''' goodreads review import '''
|
''' goodreads review import '''
|
||||||
import_job = models.ImportJob.objects.create(user=self.local_user)
|
import_job = models.ImportJob.objects.create(user=self.local_user)
|
||||||
|
|
Loading…
Reference in a new issue