Add game answer functionality with form and view for user responses

This commit is contained in:
Edgar P. Burkhart 2025-06-15 12:40:55 +02:00
parent 6dbb1a54e0
commit d03d3b48d4
Signed by: edpibu
GPG key ID: 9833D3C5A25BD227
9 changed files with 97 additions and 12 deletions

View file

@ -421,3 +421,34 @@ class GroupClearBlacklistView(MemberFilterMixin, SingleObjectMixin, View):
group.musicvideo_set.filter(blacklisted=True).update(blacklisted=False)
messages.add_message(request, messages.SUCCESS, "La blacklist a été effacée.")
return redirect(group)
class GameAnswerView(LoginRequiredMixin, DetailView):
model = models.MusikGame
template_name = "game/musikgame_answer.html"
def get_queryset(self):
return super().get_queryset().filter(players=self.request.user)
def get_context_data(self, **kwargs):
return super().get_context_data(**kwargs) | {
"form": forms.AnswerForm(game=self.object, user=self.request.user)
}
def post(self, request, pk):
game = self.get_object()
for music in game.musicgameorder_set.all():
answer = request.POST.get(f"answer-{music.order}")
if answer:
models.MusicGameAnswer.objects.update_or_create(
game=music,
player=request.user,
defaults={"answer": game.players.get(pk=answer)},
)
else:
models.MusicGameAnswer.objects.update_or_create(
game=music,
player=request.user,
defaults={"answer": None},
)
return redirect("game_answer", pk)