diff --git a/vrobbler/apps/books/admin.py b/vrobbler/apps/books/admin.py index 014f339..e954018 100644 --- a/vrobbler/apps/books/admin.py +++ b/vrobbler/apps/books/admin.py @@ -22,6 +22,7 @@ class AuthorAdmin(admin.ModelAdmin): class PageAdmin(admin.ModelAdmin): date_hierarchy = "created" list_filter = ("book",) + ordering = ("book", "number") @admin.register(Book) diff --git a/vrobbler/apps/books/koreader.py b/vrobbler/apps/books/koreader.py index 96959d1..e6864ce 100644 --- a/vrobbler/apps/books/koreader.py +++ b/vrobbler/apps/books/koreader.py @@ -130,6 +130,7 @@ def build_scrobbles_from_pages( new_scrobbles = [] new_scrobbles = [] + pages_created = [] for page_row in rows: koreader_id = page_row[KoReaderPageStatColumn.ID_BOOK.value] page_number = page_row[KoReaderPageStatColumn.PAGE.value] @@ -147,8 +148,9 @@ def build_scrobbles_from_pages( KoReaderPageStatColumn.DURATION.value ] page.save(update_fields=["start_time", "duration_seconds"]) - page.refresh_from_db() + pages_created.append(page) + for page in pages_created: if page.is_scrobblable: # Page number is a placeholder, we'll re-preocess this after creation logger.debug( @@ -161,7 +163,7 @@ def build_scrobbles_from_pages( timestamp=page.start_time, played_to_completion=True, in_progress=False, - book_pages_read=page_number, + book_pages_read=page.number, long_play_complete=False, ) new_scrobbles.append(new_scrobble) diff --git a/vrobbler/apps/books/models.py b/vrobbler/apps/books/models.py index 3a7143d..7c1f291 100644 --- a/vrobbler/apps/books/models.py +++ b/vrobbler/apps/books/models.py @@ -231,7 +231,7 @@ class Page(TimeStampedModel): @property def seconds_to_next_page(self) -> int: - seconds = 0 + seconds = 999999 # Effectively infnity time as we have no next if not self.end_time: self._set_end_time() if self.next: @@ -265,7 +265,7 @@ class Page(TimeStampedModel): def _set_end_time(self) -> None: if self.end_time: - return self.end_time + return self.end_time = self.start_time + timedelta( seconds=self.duration_seconds