fix(gameplay): restore reveal before scoreboard
All checks were successful
CI / test-and-quality (push) Successful in 2m43s
CI / test-and-quality (pull_request) Successful in 2m43s

This commit is contained in:
2026-03-15 07:55:48 +00:00
parent dc0c203f7f
commit 558f8fe245
3 changed files with 29 additions and 14 deletions

View File

@@ -714,12 +714,11 @@ def reveal_scoreboard(request: HttpRequest, code: str) -> JsonResponse:
with transaction.atomic():
locked_session = GameSession.objects.select_for_update().get(pk=session.pk)
if locked_session.status not in {GameSession.Status.REVEAL, GameSession.Status.SCOREBOARD}:
return JsonResponse({"error": "Scoreboard is only available in reveal or scoreboard phase"}, status=400)
if locked_session.status != GameSession.Status.REVEAL:
return JsonResponse({"error": "Scoreboard is only available in reveal phase"}, status=400)
if locked_session.status == GameSession.Status.REVEAL:
locked_session.status = GameSession.Status.SCOREBOARD
locked_session.save(update_fields=["status"])
locked_session.status = GameSession.Status.SCOREBOARD
locked_session.save(update_fields=["status"])
leaderboard = list(
Player.objects.filter(session=session)
@@ -897,7 +896,7 @@ def calculate_scores(request: HttpRequest, code: str, round_question_id: int) ->
ScoreEvent.objects.bulk_create(score_events)
locked_session.status = GameSession.Status.SCOREBOARD
locked_session.status = GameSession.Status.REVEAL
locked_session.save(update_fields=["status"])
leaderboard = list(
@@ -910,7 +909,7 @@ def calculate_scores(request: HttpRequest, code: str, round_question_id: int) ->
{
"session": {
"code": session.code,
"status": GameSession.Status.SCOREBOARD,
"status": GameSession.Status.REVEAL,
"current_round": session.current_round,
},
"round_question": {