[boardgames] Tighten up boardgame lookups

This commit is contained in:
2025-11-02 23:43:19 -05:00
parent a8747dfe77
commit dcb5260cfc
8 changed files with 234 additions and 55 deletions

View File

@ -355,29 +355,6 @@ def manual_scrobble_board_game(
return Scrobble.create_or_update(boardgame, user_id, scrobble_dict)
def find_and_enrich_board_game_data(game_dict: dict) -> BoardGame | None:
"""TODO Move this to a utility somewhere"""
game = BoardGame.find_or_create(game_dict.get("bggId"))
if game:
game.cooperative = game_dict.get("cooperative", False)
game.highest_wins = game_dict.get("highestWins", True)
game.no_points = game_dict.get("noPoints", False)
game.uses_teams = game_dict.get("useTeams", False)
game.bgstats_id = game_dict.get("uuid", None)
if not game.rating:
game.rating = game_dict.get("rating") / 10
game.save()
if game_dict.get("designers"):
for designer_name in game_dict.get("designers", "").split(", "):
designer, created = BoardGameDesigner.objects.get_or_create(
name=designer_name
)
game.designers.add(designer.id)
return game
def email_scrobble_board_game(
bgstat_data: dict[str, Any], user_id: int
) -> list[Scrobble]:
@ -407,11 +384,11 @@ def email_scrobble_board_game(
log_data = {}
for game in game_list:
logger.info(f"Finding and enriching {game.get('name')}")
enriched_game = find_and_enrich_board_game_data(game)
game_obj = BoardGame.find_or_create(game.get("bggId"), data=game)
if game.get("isBaseGame"):
base_games[game.get("id")] = enriched_game
base_games[game.get("id")] = game_obj
if game.get("isExpansion"):
expansions[game.get("id")] = enriched_game
expansions[game.get("id")] = game_obj
locations = {}
for location_dict in bgstat_data.get("locations", []):