From 45d524ca61edee1946c5610298e737c3bf52cffe Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Tue, 24 Mar 2026 17:16:30 -0400 Subject: [PATCH] [boardgames] Format board game data --- vrobbler/apps/boardgames/models.py | 30 ++++++++++++++++++- .../boardgames/boardgame_detail.html | 2 +- .../templates/scrobbles/scrobble_detail.html | 7 +++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/vrobbler/apps/boardgames/models.py b/vrobbler/apps/boardgames/models.py index 851e822..fe45d15 100644 --- a/vrobbler/apps/boardgames/models.py +++ b/vrobbler/apps/boardgames/models.py @@ -103,6 +103,35 @@ class BoardGameLogData(BaseLogData, LongPlayLogData): ) return "" + def as_html(self) -> str: + html_parts = [] + + if self.board: + html_parts.append(f'
{self.board}
') + + if self.location: + html_parts.append(f'
{self.location}
') + + if self.players: + players_html = [] + for player_data in self.players: + player = BoardGameScoreLogData(**player_data) + player_info = player.name + if player.score: + player_info += f" ({player.score})" + if player.win: + player_info += " 🏆" + if player.new: + player_info += " (new)" + players_html.append( + f'
{player_info}
' + ) + html_parts.append( + f'
{"".join(players_html)}
' + ) + + return "".join(html_parts) + @classmethod def override_fields(cls) -> dict: fields = {} @@ -262,7 +291,6 @@ class BoardGame(ScrobblableMixin): def fix_metadata(self, data: dict = {}, force_update=False) -> None: if not self.published_date or force_update: - if not data: data = lookup_boardgame_from_bgg(str(self.bggeek_id)) diff --git a/vrobbler/templates/boardgames/boardgame_detail.html b/vrobbler/templates/boardgames/boardgame_detail.html index f7364e4..f7456a5 100644 --- a/vrobbler/templates/boardgames/boardgame_detail.html +++ b/vrobbler/templates/boardgames/boardgame_detail.html @@ -71,7 +71,7 @@ {{scrobble.local_timestamp}} {{scrobble.logdata.location }} - {% if scrobble.logdata.player_log %}{{scrobble.logdata.player_log}}{% else %}No data{% endif %} + {% if scrobble.logdata.player_log %}{{scrobble.logdata.as_html|safe }}{% else %}No data{% endif %} {% endfor %} diff --git a/vrobbler/templates/scrobbles/scrobble_detail.html b/vrobbler/templates/scrobbles/scrobble_detail.html index 22770df..42cad5e 100644 --- a/vrobbler/templates/scrobbles/scrobble_detail.html +++ b/vrobbler/templates/scrobbles/scrobble_detail.html @@ -28,6 +28,13 @@

Rate: {{object.logdata.avg_seconds_per_page}}s per page

{% endif %} +{% if object.media_type == "BoardGame" and object.logdata.as_html %} +
+
Game Details
+ {{ object.logdata.as_html|safe }} +
+{% endif %} +