Adding completed_at and winners to g ames

This commit is contained in:
ryan
2026-01-24 09:57:25 -05:00
parent e431ba45e9
commit d4345a4e09
5 changed files with 159 additions and 27 deletions

View File

@@ -203,20 +203,33 @@ def reset_timer(game, socketio_instance):
def end_game(game, socketio_instance):
"""End/deactivate a game"""
"""End/deactivate a game and record winners"""
from datetime import datetime
# Calculate winners (team(s) with highest score)
if game.teams:
team_scores = [(team.name, team.total_score) for team in game.teams]
if team_scores:
max_score = max(score for _, score in team_scores)
winners = [
{"team_name": name, "score": score}
for name, score in team_scores
if score == max_score
]
game.winners = winners
game.is_active = False
game.completed_at = datetime.utcnow()
db.session.commit()
# Emit game_ended event to all rooms
socketio_instance.emit('game_ended', {
# Emit game_ended event with winners
end_data = {
'game_id': game.id,
'game_name': game.name
}, room=f'game_{game.id}_contestant')
socketio_instance.emit('game_ended', {
'game_id': game.id,
'game_name': game.name
}, room=f'game_{game.id}_admin')
'game_name': game.name,
'winners': game.winners
}
socketio_instance.emit('game_ended', end_data, room=f'game_{game.id}_contestant')
socketio_instance.emit('game_ended', end_data, room=f'game_{game.id}_admin')
def restart_game(game, socketio_instance):