поправил капитанов на расстановки

This commit is contained in:
2026-08-10 10:30:08 +03:00
parent adea3a8bd6
commit b29fc06a4f
5 changed files with 243 additions and 6 deletions

View File

@@ -471,6 +471,52 @@ def save_match_lineup_for_editor(
insert_players("away", "starting", away_starting)
insert_players("away", "bench", away_bench)
# Синхронизируем капитана с уже сохранённой расстановкой.
# /home-formations и /away-formations читают is_captain из
# match_formations, поэтому ручная смена капитана в редакторе
# состава должна сразу попадать и туда без пересохранения
# вкладки «Расстановки».
def sync_formation_captain(side: str, team_id: int) -> None:
cur.execute(
"""
UPDATE match_formations mf
SET
is_captain = COALESCE((
SELECT mlp.is_captain
FROM match_lineup_players mlp
WHERE mlp.match_id = mf.match_id
AND mlp.side = %s
AND mlp.role = 'starting'
AND (
(
mf.player_id IS NOT NULL
AND mlp.player_id = mf.player_id
)
OR (
COALESCE(NULLIF(TRIM(mf.number), ''), '') <> ''
AND COALESCE(mlp.number::text, '') = COALESCE(mf.number, '')
)
)
ORDER BY
CASE
WHEN mf.player_id IS NOT NULL
AND mlp.player_id = mf.player_id
THEN 0
ELSE 1
END,
mlp.sort_order
LIMIT 1
), FALSE),
updated_at = NOW()
WHERE mf.match_id = %s
AND mf.team_id = %s
""",
(side, match_id, team_id),
)
sync_formation_captain("home", home_team_id)
sync_formation_captain("away", away_team_id)
insert_coaches("home", home_coaches)
insert_coaches("away", away_coaches)