Forráskód Böngészése

[boardgames] Add str rep for player dataclass

Colin Powell 8 hónapja
szülő
commit
c84acf6ae7
1 módosított fájl, 27 hozzáadás és 2 törlés
  1. 27 2
      vrobbler/apps/scrobbles/dataclasses.py

+ 27 - 2
vrobbler/apps/scrobbles/dataclasses.py

@@ -34,13 +34,38 @@ class JSONDataclass(JSONWizard):
 @dataclass
 class BoardGameScoreLogData(JSONDataclass):
     user_id: Optional[int] = None
-    name: Optional[str] = None
-    bgg_username: Optional[str] = None
+    name_str: str = ""
+    bgg_username: str = ""
     color: Optional[str] = None
     character: Optional[str] = None
     team: Optional[str] = None
     score: Optional[int] = None
     win: Optional[bool] = None
+    new: Optional[bool] = None
+
+    @property
+    def user(self) -> Optional[User]:
+        user = None
+        if self.user_id:
+            user = User.objects.filter(id=self.user_id).first()
+        return user
+
+    @property
+    def name(self) -> str:
+        name = self.name_str
+        if self.user_id:
+            name = self.user.first_name
+        return name
+
+    def __str__(self) -> str:
+        out = self.name
+        if self.score:
+            out += f" {self.score}"
+        if self.color:
+            out += f" ({self.color})"
+        if self.win:
+            out += f" [W]"
+        return out
 
 
 @dataclass