diff --git a/draw/consumers.py b/draw/consumers.py index f458c16..ef021e7 100644 --- a/draw/consumers.py +++ b/draw/consumers.py @@ -216,6 +216,14 @@ class DrawConsumer(AsyncJsonWebsocketConsumer): self.tournament.draw.current_round.current_pool = pool await sync_to_async(self.tournament.draw.current_round.save)() + msg = "Les résultats des dés sont les suivants : " + msg += await sync_to_async(lambda: ", ".join( + f"{td.participation.team.trigram} ({td.last_dice})" + for td in self.tournament.draw.current_round.team_draws))() + msg += ". L'ordre de passage et les compositions des différentes poules sont affiché⋅es sur le côté." + self.tournament.draw.last_message = msg + await sync_to_async(self.tournament.draw.save)() + await TeamDraw.objects.filter(round=self.tournament.draw.current_round).aupdate(last_dice=None) for td in tds: await self.channel_layer.group_send( @@ -279,6 +287,9 @@ class DrawConsumer(AsyncJsonWebsocketConsumer): pool.current_team = tds[0] await sync_to_async(pool.save)() + self.tournament.draw.last_message = "" + await sync_to_async(self.tournament.draw.save)() + await self.channel_layer.group_send(f"tournament-{self.tournament.id}", {'type': 'draw.set_info', 'draw': self.tournament.draw}) await self.channel_layer.group_send(f"tournament-{self.tournament.id}", diff --git a/draw/migrations/0005_draw_last_message.py b/draw/migrations/0005_draw_last_message.py new file mode 100644 index 0000000..b559164 --- /dev/null +++ b/draw/migrations/0005_draw_last_message.py @@ -0,0 +1,17 @@ +# Generated by Django 4.1.7 on 2023-03-24 10:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("draw", "0004_remove_teamdraw_index_teamdraw_choose_index_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="draw", + name="last_message", + field=models.TextField(blank=True, default="", verbose_name="last message"), + ), + ] diff --git a/draw/models.py b/draw/models.py index ed4a1f5..67e892c 100644 --- a/draw/models.py +++ b/draw/models.py @@ -25,6 +25,12 @@ class Draw(models.Model): verbose_name=_('current round'), ) + last_message = models.TextField( + blank=True, + default="", + verbose_name=_("last message"), + ) + def get_state(self): if self.current_round.current_pool is None: return 'DICE_SELECT_POULES' @@ -40,6 +46,9 @@ class Draw(models.Model): @property def information(self): s = "" + if self.last_message: + s += self.last_message + "

" + match self.get_state(): case 'DICE_SELECT_POULES': if self.current_round.number == 1: @@ -62,6 +71,23 @@ class Draw(models.Model): Les capitaines peuvent lancer un dé 100 en cliquant sur le gros bouton pour déterminer l'ordre de tirage. L'équipe réalisant le plus gros score pourra tirer en premier.""" + case 'WAITING_DRAW_PROBLEM': + td = self.current_round.current_pool.current_team + s += f"""C'est au tour de l'équipe {td.participation.team.trigram} + de choisir son problème. Cliquez sur l'urne au milieu pour tirer un problème au sort.""" + case 'WAITING_CHOOSE_PROBLEM': + td = self.current_round.current_pool.current_team + s += f"""L'équipe {td.participation.team.trigram} a tiré le problème + {td.purposed}. """ + if td.purposed in td.rejected: + s += """Elle a déjà refusé ce problème auparavant, elle peut donc le refuser sans pénalité et + tirer un nouveau problème immédiatement, ou bien revenir sur son choix.""" + else: + s += "Elle peut décider d'accepter ou de refuser ce problème. " + if len(td.rejected) >= settings.PROBLEM_COUNT - 5: + s += "Refuser ce problème ajoutera une nouvelle pénalité de 0.5 sur le coefficient de l'oral de læ défenseur•se." + else: + s += f"Il reste {settings.PROBLEM_COUNT - 5 - len(td.rejected)} refus sans pénalité." s += "

" if s else "" s += """Pour plus de détails sur le déroulement du tirage au sort,