[scrobbles] Fix dataclass parsing and add puzzles to urls

This commit is contained in:
2025-08-03 01:59:56 -04:00
parent fc72b23b11
commit d04db0ecb5
15 changed files with 240 additions and 232 deletions

View File

@ -14,6 +14,7 @@ from boardgames.models import BoardGame
from books.koreader import process_koreader_sqlite_file
from books.models import Book, Paper
from bricksets.models import BrickSet
from dataclass_wizard.errors import ParseError
from django.conf import settings
from django.contrib.auth import get_user_model
from django.core.files import File
@ -718,11 +719,11 @@ class Scrobble(TimeStampedModel):
)
@property
def logdata(self) -> Optional[logdata.JSONDataclass]:
def logdata(self) -> Optional[logdata.BaseLogData]:
if self.media_obj:
logdata_cls = self.media_obj.logdata_cls
else:
logdata_cls = logdata.ScrobbleLogData
logdata_cls = logdata.BaseLogData
log_dict = self.log
if isinstance(self.log, str):
@ -736,7 +737,14 @@ class Scrobble(TimeStampedModel):
if not log_dict:
log_dict = {}
return logdata_cls(**log_dict)
try:
return logdata_cls.from_dict(log_dict)
except ParseError:
logger.warning(
"Could not parse log data",
extra={"log_dict": log_dict, "scrobble_id": self.id},
)
return logdata_cls()
def redirect_url(self, user_id) -> str:
user = User.objects.filter(id=user_id).first()