Compare commits
2 Commits
d2b4c2d33a
...
0396e2409a
Author | SHA1 | Date |
---|---|---|
|
0396e2409a | |
|
77ed205f57 |
|
@ -80,7 +80,8 @@ async def handle_update_attendance(
|
||||||
app_db.db_session.commit()
|
app_db.db_session.commit()
|
||||||
event.update_discord_message()
|
event.update_discord_message()
|
||||||
await interaction.response.defer()
|
await interaction.response.defer()
|
||||||
|
return
|
||||||
|
|
||||||
if not player_event:
|
if not player_event:
|
||||||
player_event = PlayerEvent()
|
player_event = PlayerEvent()
|
||||||
player_event.event_id = event.id
|
player_event.event_id = event.id
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import requests
|
import requests
|
||||||
import threading
|
import threading
|
||||||
|
from models.player import Player
|
||||||
from sqlalchemy.orm import mapped_column, relationship, scoped_session
|
from sqlalchemy.orm import mapped_column, relationship, scoped_session
|
||||||
from sqlalchemy.orm.attributes import Mapped
|
from sqlalchemy.orm.attributes import Mapped
|
||||||
from sqlalchemy.orm.properties import ForeignKey
|
from sqlalchemy.orm.properties import ForeignKey
|
||||||
|
@ -77,10 +78,20 @@ class Event(app_db.BaseModel):
|
||||||
|
|
||||||
def get_discord_content(self):
|
def get_discord_content(self):
|
||||||
start_timestamp = int(self.start_time.timestamp())
|
start_timestamp = int(self.start_time.timestamp())
|
||||||
players = list(self.players)
|
|
||||||
|
# TODO: write this to use a single query
|
||||||
|
players: list[PlayerEvent] = list(self.players)
|
||||||
|
non_players = app_db.db_session.query(
|
||||||
|
PlayerTeam
|
||||||
|
).where(
|
||||||
|
PlayerTeam.team_id == self.team_id,
|
||||||
|
PlayerTeam.player_id.not_in([p.player_id for p in players])
|
||||||
|
).all()
|
||||||
|
|
||||||
# players should be sorted by their role, leaving no-role players last
|
# players should be sorted by their role, leaving no-role players last
|
||||||
players.sort(key=lambda p: p.role.role.value if p.role else 1023)
|
players.sort(key=lambda p: p.role.role.value if p.role else 1023)
|
||||||
players_info = []
|
players_info = []
|
||||||
|
non_players_info = ""
|
||||||
matchings = self.get_maximum_matching()
|
matchings = self.get_maximum_matching()
|
||||||
ringers_needed = 6 - matchings
|
ringers_needed = 6 - matchings
|
||||||
|
|
||||||
|
@ -123,6 +134,16 @@ class Event(app_db.BaseModel):
|
||||||
|
|
||||||
players_info.append(player_info)
|
players_info.append(player_info)
|
||||||
|
|
||||||
|
non_players_info = "<:blank:1373226295651209226> ❌ "
|
||||||
|
non_players_info += ", ".join(
|
||||||
|
[
|
||||||
|
f"<@{player.player.discord_id}>"
|
||||||
|
if player.player.discord_id
|
||||||
|
else player.player.username
|
||||||
|
for player in non_players
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
ringers_needed_msg = ""
|
ringers_needed_msg = ""
|
||||||
if ringers_needed > 0:
|
if ringers_needed > 0:
|
||||||
if ringers_needed == 1:
|
if ringers_needed == 1:
|
||||||
|
@ -137,6 +158,7 @@ class Event(app_db.BaseModel):
|
||||||
"",
|
"",
|
||||||
f"<t:{start_timestamp}:f>",
|
f"<t:{start_timestamp}:f>",
|
||||||
"\n".join(players_info),
|
"\n".join(players_info),
|
||||||
|
non_players_info,
|
||||||
f"Maximum roles filled: {matchings}" + ringers_needed_msg,
|
f"Maximum roles filled: {matchings}" + ringers_needed_msg,
|
||||||
#"",
|
#"",
|
||||||
#"[Confirm attendance here]" +
|
#"[Confirm attendance here]" +
|
||||||
|
|
Loading…
Reference in New Issue