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,