From 811adc2f02dbbba6e3ebf873619a5b6a98f72c46 Mon Sep 17 00:00:00 2001 From: HumanoidSandvichDispenser Date: Wed, 24 Sep 2025 13:34:26 -0700 Subject: [PATCH] Put unroled players on a single line in event text --- backend-flask/models/event.py | 43 +++++++++++++++--- backend-flask/tests/test_event.py | 74 +++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 7 deletions(-) diff --git a/backend-flask/models/event.py b/backend-flask/models/event.py index b33fb04..d2ceb12 100644 --- a/backend-flask/models/event.py +++ b/backend-flask/models/event.py @@ -112,15 +112,22 @@ class Event(app_db.BaseModel): "PocketScout": "1373040277924614254" } - for player in players: + # display roles on individual lines, and unroled players are grouped by + # availability + + roled_players = [p for p in players if p.role] + unroled_players = [p for p in players if not p.role] + unroled_confirmed = [p for p in unroled_players if p.has_confirmed] + unroled_pending = [p for p in unroled_players if not p.has_confirmed] + + for player in roled_players: + assert player.role is not None + player_info = "" - if player.role: - player_info += "<:" + player.role.role.name + ":" + role_emojis.get( - player.role.role.name, "1373226295651209226" - ) + ">" - else: - player_info += "<:blank:1373226295651209226>" + player_info += "<:" + player.role.role.name + ":" + role_emojis.get( + player.role.role.name, "1373226295651209226" + ) + ">" if player.has_confirmed: player_info += " ✅" @@ -134,6 +141,28 @@ class Event(app_db.BaseModel): players_info.append(player_info) + for group in [unroled_confirmed, unroled_pending]: + if len(group) == 0: + continue + + unroled_players_info = "<:blank:1373226295651209226> " + if group == unroled_confirmed: + unroled_players_info += "✅ " + else: + unroled_players_info += "⌛ " + + # list players in this group + unroled_players_info += ", ".join( + [ + f"<@{player.player.discord_id}>" + if player.player.discord_id + else player.player.username + for player in group + ] + ) + + players_info.append(unroled_players_info) + non_players_info = "<:blank:1373226295651209226> ❌ " non_players_info += ", ".join( [ diff --git a/backend-flask/tests/test_event.py b/backend-flask/tests/test_event.py index a009eb0..e0fe70d 100644 --- a/backend-flask/tests/test_event.py +++ b/backend-flask/tests/test_event.py @@ -1,7 +1,9 @@ import datetime from models.event import Event from app_db import db +from models.player import Player from models.player_event import PlayerEvent +from models.player_team import PlayerTeam def test_get_event(client, headers): @@ -74,3 +76,75 @@ def test_get_maximum_matching_no_players(app): start_time=datetime.datetime.now(datetime.timezone.utc), ) assert event.get_maximum_matching() == 0 + +def test_get_discord_content(app): + def populate_team(): + player2 = Player(steam_id=76561198248436609, username="pyro from cs2") + player3 = Player(steam_id=76561198248436610, username="pyro from cs3") + player4 = Player(steam_id=76561198248436611, username="pyro from cs4") + + db.session.add(player2) + db.session.add(player3) + db.session.add(player4) + db.session.flush() + + player_team2 = PlayerTeam( + player_id=player2.steam_id, + team_id=1, + ) + player_team3 = PlayerTeam( + player_id=player3.steam_id, + team_id=1, + ) + player_team4 = PlayerTeam( + player_id=player4.steam_id, + team_id=1, + ) + db.session.add(player_team2) + db.session.add(player_team3) + db.session.add(player_team4) + db.session.commit() + + populate_team() + event = Event( + team_id=1, + name="New Event", + start_time=datetime.datetime.now(datetime.timezone.utc), + ) + db.session.add(event) + db.session.flush() + event_player = PlayerEvent( + event_id=event.id, + player_id=76561198248436608, + player_team_role_id=1, + has_confirmed=True, + ) + event_player2 = PlayerEvent( + event_id=event.id, + player_id=76561198248436609, + player_team_role_id=None, + has_confirmed=True, + ) + event_player3 = PlayerEvent( + event_id=event.id, + player_id=76561198248436610, + player_team_role_id=None, + has_confirmed=False, + ) + event_player4 = PlayerEvent( + event_id=event.id, + player_id=76561198248436611, + player_team_role_id=None, + has_confirmed=False, + ) + db.session.add(event_player) + db.session.add(event_player2) + db.session.add(event_player3) + db.session.add(event_player4) + db.session.commit() + + content = event.get_discord_content() + assert "✅ pyro from csgo" in content + assert "✅ pyro from cs2" in content + assert "⌛ pyro from cs3, pyro from cs4" in content +