поправил капитанов на расстановки
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user