[scrobbles] Fix dataclass parsing and add puzzles to urls
This commit is contained in:
@ -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()
|
||||
|
||||
Reference in New Issue
Block a user