Update game answer handling and UI for completed games
This commit is contained in:
parent
303538bf48
commit
3d585e1e14
4 changed files with 29 additions and 10 deletions
|
@ -434,7 +434,7 @@ class GameAnswerView(LoginRequiredMixin, DetailView):
|
|||
template_name = "game/musikgame_answer.html"
|
||||
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().filter(over=False, players=self.request.user)
|
||||
return super().get_queryset().filter(players=self.request.user)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
return super().get_context_data(**kwargs) | {
|
||||
|
@ -443,6 +443,8 @@ class GameAnswerView(LoginRequiredMixin, DetailView):
|
|||
|
||||
def post(self, request, pk):
|
||||
game = self.get_object()
|
||||
if game.over:
|
||||
raise PermissionDenied()
|
||||
for music in game.musicgameorder_set.all():
|
||||
answer = request.POST.get(f"answer-{music.order}")
|
||||
if answer:
|
||||
|
@ -469,16 +471,28 @@ class GameEndView(LoginRequiredMixin, SingleObjectMixin, View):
|
|||
raise PermissionDenied()
|
||||
game.over = True
|
||||
|
||||
value = {}
|
||||
for go in game.musicgameorder_set.all():
|
||||
value[go.pk] = 1000 / (
|
||||
1
|
||||
+ (
|
||||
(go.musicgameanswer_set.filter(game__player=F("answer")).count())
|
||||
- 1 / game.players.count()
|
||||
)
|
||||
** 2
|
||||
)
|
||||
|
||||
for player in game.players.all():
|
||||
score = (
|
||||
100
|
||||
* player.musicgameanswer_set.filter(game__game=game)
|
||||
.exclude(game__player=player)
|
||||
.filter(game__player=F("answer"))
|
||||
.count()
|
||||
score = sum(
|
||||
[
|
||||
value[ga.game.pk]
|
||||
for ga in player.musicgameanswer_set.filter(game__game=game)
|
||||
.exclude(game__player=player)
|
||||
.filter(game__player=F("answer"))
|
||||
]
|
||||
)
|
||||
score -= (
|
||||
50
|
||||
500
|
||||
* player.musicgameanswer_set.filter(game__game=game)
|
||||
.filter(game__player=player)
|
||||
.exclude(game__player=F("answer"))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue