create player on import

This commit is contained in:
SowinskiBraeden committed 2026-06-25 01:05:38 -07:00
1 parent 988f170ea4
commit 56c9a1084c
1 file changed
+23 -1
+23 -1
View File
@@ -1256,7 +1256,7 @@ def import_ledger_csv(league_ref: str):
list_ledger_events_for_league, list_ledger_events_for_league,
session_event_ref, session_event_ref,
) )
from league_repositories import list_players_for_league, list_sessions_for_league from league_repositories import create_player, list_players_for_league, list_sessions_for_league, unique_player_slug
from storage import CSV_HEADERS from storage import CSV_HEADERS
league = require_league(league_ref, {"owner", "manager"}) league = require_league(league_ref, {"owner", "manager"})
@@ -1342,6 +1342,26 @@ def import_ledger_csv(league_ref: str):
session_by_ref[ref] = new_session session_by_ref[ref] = new_session
sessions_created += 1 sessions_created += 1
# Auto-create any players referenced in the CSV that don't exist yet.
# Only rows that need a player (not note/session_open/session_close) are considered.
non_player_types = {"note", "session_open", "session_close"}
missing_players: set[str] = set()
for row in csv.DictReader(lines):
raw_type = row.get("event_type", "").strip()
if canonical_event_type(raw_type) in non_player_types:
continue
name = row.get("player_name", "").strip()
if name and name.casefold() not in player_by_name:
missing_players.add(name)
players_created = 0
for name in sorted(missing_players):
slug = unique_player_slug(league.id, name)
new_player = create_player(league.id, name, slug)
db.session.flush()
player_by_name[name.casefold()] = new_player
players_created += 1
errors: list[str] = [] errors: list[str] = []
queued: list[dict] = [] queued: list[dict] = []
skipped = 0 skipped = 0
@@ -1415,5 +1435,7 @@ def import_ledger_csv(league_ref: str):
parts = [f"Imported {s_count}", f"skipped {s_skip}"] parts = [f"Imported {s_count}", f"skipped {s_skip}"]
if sessions_created: if sessions_created:
parts.append(f"created {sessions_created} session{'s' if sessions_created != 1 else ''}") parts.append(f"created {sessions_created} session{'s' if sessions_created != 1 else ''}")
if players_created:
parts.append(f"created {players_created} player{'s' if players_created != 1 else ''}")
flash(", ".join(parts) + ".", "success") flash(", ".join(parts) + ".", "success")
return redirect(url_for("leagues.ledger", **league_url_values(league))) return redirect(url_for("leagues.ledger", **league_url_values(league)))