[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

@ -1,3 +1,5 @@
from dataclasses import dataclass
from typing import Optional
from uuid import uuid4
import requests
@ -9,12 +11,19 @@ from django_extensions.db.models import TimeStampedModel
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToFit
from puzzles.sources import ipdb
from scrobbles.dataclasses import PuzzleLogData
from scrobbles.dataclasses import JSONDataclass
from scrobbles.mixins import ScrobblableConstants, ScrobblableMixin
BNULL = {"blank": True, "null": True}
@dataclass
class PuzzleLogData(JSONDataclass):
with_people: Optional[int] = None
rating: Optional[str] = None
notes: Optional[str] = None
class PuzzleManufacturer(TimeStampedModel):
uuid = models.UUIDField(default=uuid4, editable=False, **BNULL)
name = models.CharField(max_length=255)
@ -58,6 +67,10 @@ class Puzzle(ScrobblableMixin):
def __str__(self):
return f"{self.title} ({self.pieces_count}) by {self.manufacturer}"
@property
def logdata_cls(self):
return PuzzleLogData
@property
def subtitle(self):
return self.manufacturer.name