From 9bc0e99d6d29d98ea6f100e298c616ac5b3dda69 Mon Sep 17 00:00:00 2001 From: Emmy D'Anello Date: Thu, 11 May 2023 18:00:32 +0200 Subject: [PATCH] Fix the drawing resume for the final Signed-off-by: Emmy D'Anello --- draw/consumers.py | 18 ++++++++++-- draw/static/draw.js | 69 +++++++++++++++++++++------------------------ 2 files changed, 47 insertions(+), 40 deletions(-) diff --git a/draw/consumers.py b/draw/consumers.py index 4dd90e5..26e0e9d 100644 --- a/draw/consumers.py +++ b/draw/consumers.py @@ -988,8 +988,7 @@ class DrawConsumer(AsyncJsonWebsocketConsumer): async for participation in self.tournament.participations.filter(valid=True).prefetch_related('team').all(): notes[participation] = sum([await pool.aaverage(participation) async for pool in self.tournament.pools.filter(participations=participation) - .prefetch_related('passages').prefetch_related('tweaks') - if pool.results_available]) + .prefetch_related('passages')]) # Sort notes in a decreasing order ordered_participations = sorted(notes.keys(), key=lambda x: -notes[x]) # Define pools and passage orders from the ranking of the first round @@ -1368,7 +1367,7 @@ class DrawConsumer(AsyncJsonWebsocketConsumer): else: # Don't continue the final tournament r1 = await self.tournament.draw.round_set \ - .prefetch_related('current_pool__current__team__participation__team').aget(number=1) + .prefetch_related('current_pool__current_team__participation__team').aget(number=1) self.tournament.draw.current_round = r1 await self.tournament.draw.asave() @@ -1378,6 +1377,19 @@ class DrawConsumer(AsyncJsonWebsocketConsumer): td.choice_dice = None await td.asave() + await self.channel_layer.group_send(f"tournament-{self.tournament.id}", + { + 'tid': self.tournament_id, + 'type': 'draw.send_poules', + 'round': 2, 'poules': [ + { + 'letter': pool.get_letter_display(), + 'teams': [], + } + async for pool in r.pool_set.order_by('letter').all() + ] + }) + async for td in r1.team_draws.prefetch_related('participation__team').all(): await self.channel_layer.group_send( f"tournament-{self.tournament.id}", {'tid': self.tournament_id, 'type': 'draw.dice', diff --git a/draw/static/draw.js b/draw/static/draw.js index dc1e3ce..f574b92 100644 --- a/draw/static/draw.js +++ b/draw/static/draw.js @@ -323,49 +323,44 @@ document.addEventListener('DOMContentLoaded', () => { li.append(title, teamList) poolList.append(li) } + teamList.innerHTML = "" - if (poule.teams.length > 0) { - // The pool is initialized - for (let team of poule.teams) { - // Reorder dices - let diceDiv = document.getElementById(`dice-${tid}-${team}`) - diceDiv.parentElement.style.order = c.toString() - c += 1 + for (let team of poule.teams) { + // Reorder dices + let diceDiv = document.getElementById(`dice-${tid}-${team}`) + diceDiv.parentElement.style.order = c.toString() + c += 1 - let teamLiId = `recap-${tid}-round-${round}-team-${team}` - let teamLi = document.getElementById(teamLiId) + let teamLiId = `recap-${tid}-round-${round}-team-${team}` - if (teamLi === null) { - // Add a line for the team in the recap - teamLi = document.createElement('li') - teamLi.id = teamLiId - teamLi.classList.add('list-group-item') - teamLi.setAttribute('data-tournament', tid) + // Add a line for the team in the recap + let teamLi = document.createElement('li') + teamLi.id = teamLiId + teamLi.classList.add('list-group-item') + teamLi.setAttribute('data-tournament', tid) - teamList.append(teamLi) - } + teamList.append(teamLi) - // Add the accepted problem div (empty for now) - let acceptedDivId = `recap-${tid}-round-${round}-team-${team}-accepted` - let acceptedDiv = document.getElementById(acceptedDivId) - if (acceptedDiv === null) { - acceptedDiv = document.createElement('div') - acceptedDiv.id = acceptedDivId - acceptedDiv.classList.add('badge', 'rounded-pill', 'text-bg-warning') - acceptedDiv.textContent = `${team} 📃 ?` - teamLi.append(acceptedDiv) - } + // Add the accepted problem div (empty for now) + let acceptedDivId = `recap-${tid}-round-${round}-team-${team}-accepted` + let acceptedDiv = document.getElementById(acceptedDivId) + if (acceptedDiv === null) { + acceptedDiv = document.createElement('div') + acceptedDiv.id = acceptedDivId + acceptedDiv.classList.add('badge', 'rounded-pill', 'text-bg-warning') + acceptedDiv.textContent = `${team} 📃 ?` + teamLi.append(acceptedDiv) + } - // Add the rejected problems div (empty for now) - let rejectedDivId = `recap-${tid}-round-${round}-team-${team}-rejected` - let rejectedDiv = document.getElementById(rejectedDivId) - if (rejectedDiv === null) { - rejectedDiv = document.createElement('div') - rejectedDiv.id = rejectedDivId - rejectedDiv.classList.add('badge', 'rounded-pill', 'text-bg-danger') - rejectedDiv.textContent = '🗑️' - teamLi.append(rejectedDiv) - } + // Add the rejected problems div (empty for now) + let rejectedDivId = `recap-${tid}-round-${round}-team-${team}-rejected` + let rejectedDiv = document.getElementById(rejectedDivId) + if (rejectedDiv === null) { + rejectedDiv = document.createElement('div') + rejectedDiv.id = rejectedDivId + rejectedDiv.classList.add('badge', 'rounded-pill', 'text-bg-danger') + rejectedDiv.textContent = '🗑️' + teamLi.append(rejectedDiv) } }