diff --git a/base/static/css/main.css b/base/static/css/main.css index c6146bc..90e5032 100644 --- a/base/static/css/main.css +++ b/base/static/css/main.css @@ -130,3 +130,7 @@ td.c, th.c { margin: 0; } } + +table select { + margin-bottom: 0; +} diff --git a/game/forms.py b/game/forms.py index 76dec01..c90e286 100644 --- a/game/forms.py +++ b/game/forms.py @@ -39,3 +39,22 @@ class MusikGameForm(forms.ModelForm): kwargs["initial"].setdefault("players", players) super().__init__(*args, **kwargs) self.fields["players"].queryset = players + + +class AnswerForm(forms.Form): + def __init__(self, *args, **kwargs): + game = kwargs.pop("game") + user = kwargs.pop("user") + super().__init__(*args, **kwargs) + + for music in game.musicgameorder_set.all(): + self.fields[f"answer-{music.order}"] = forms.ChoiceField( + choices=[("", "")] + + list(game.players.all().values_list("id", "username")), + required=False, + label=music.order, + initial=ma.answer.id + if (ma := music.musicgameanswer_set.filter(player=user).first()) + and ma.answer + else "", + ) diff --git a/game/migrations/0018_musicgameanswer.py b/game/migrations/0018_musicgameanswer.py index c1d8503..1f760be 100644 --- a/game/migrations/0018_musicgameanswer.py +++ b/game/migrations/0018_musicgameanswer.py @@ -1,4 +1,4 @@ -# Generated by Django 5.2.3 on 2025-06-15 09:56 +# Generated by Django 5.2.3 on 2025-06-15 10:36 import django.db.models.deletion from django.conf import settings @@ -24,7 +24,6 @@ class Migration(migrations.Migration): verbose_name="ID", ), ), - ("order", models.PositiveIntegerField()), ( "answer", models.ForeignKey( @@ -37,7 +36,8 @@ class Migration(migrations.Migration): ( "game", models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, to="game.musikgame" + on_delete=django.db.models.deletion.CASCADE, + to="game.musicgameorder", ), ), ( @@ -49,10 +49,10 @@ class Migration(migrations.Migration): ), ], options={ - "ordering": ["order"], + "ordering": ["game"], "constraints": [ models.UniqueConstraint( - fields=("game", "player", "order"), name="unique_answer" + fields=("game", "player"), name="unique_answer" ) ], }, diff --git a/game/models.py b/game/models.py index 99a5d6b..6f4e672 100644 --- a/game/models.py +++ b/game/models.py @@ -114,17 +114,14 @@ class MusicGameOrder(models.Model): class MusicGameAnswer(models.Model): - game = models.ForeignKey(MusikGame, on_delete=models.CASCADE) + game = models.ForeignKey(MusicGameOrder, on_delete=models.CASCADE) player = models.ForeignKey(User, on_delete=models.CASCADE) - order = models.PositiveIntegerField() answer = models.ForeignKey( User, on_delete=models.SET_NULL, null=True, related_name="+" ) class Meta: constraints = [ - models.UniqueConstraint( - fields=("game", "player", "order"), name="unique_answer" - ), + models.UniqueConstraint(fields=("game", "player"), name="unique_answer"), ] - ordering = ["order"] + ordering = ["game"] diff --git a/game/templates/game/include/group_members.html b/game/templates/game/include/group_members.html index 3b668e5..daf3059 100644 --- a/game/templates/game/include/group_members.html +++ b/game/templates/game/include/group_members.html @@ -12,7 +12,7 @@