[scrobbles] Add dynamic forms for LogData classes

This commit is contained in:
2025-08-17 12:37:06 -04:00
parent 1093aa2376
commit 52494651bf
20 changed files with 352 additions and 28 deletions

View File

@ -1,7 +1,7 @@
from collections import OrderedDict
from dataclasses import dataclass
import logging
from datetime import timedelta, datetime
from datetime import datetime
from typing import Optional
from uuid import uuid4
@ -22,7 +22,6 @@ from scrobbles.mixins import (
LongPlayScrobblableMixin,
ObjectWithGenres,
ScrobblableConstants,
ScrobblableMixin,
)
from scrobbles.utils import get_scrobbles_for_media
from taggit.managers import TaggableManager
@ -64,6 +63,16 @@ class BookLogData(BaseLogData, LongPlayLogData):
page_start: Optional[int] = None
page_end: Optional[int] = None
_excluded_fields = {"koreader_hash", "page_data"}
def avg_seconds_per_page(self):
if self.page_data:
total_duration = 0
for page_num, stats in self.page_data.items():
total_duration += stats.get("duration", 0)
if total_duration:
return int(total_duration / len(self.page_data))
class Author(TimeStampedModel):
name = models.CharField(max_length=255)