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
|
@ -57,4 +57,5 @@ class AnswerForm(forms.Form):
|
||||||
if (ma := music.musicgameanswer_set.filter(player=user).first())
|
if (ma := music.musicgameanswer_set.filter(player=user).first())
|
||||||
and ma.answer
|
and ma.answer
|
||||||
else "",
|
else "",
|
||||||
|
disabled=game.over,
|
||||||
)
|
)
|
||||||
|
|
|
@ -21,6 +21,6 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<button type="submit">Valider mes réponses</button>
|
{% if not musikgame.over %}<button type="submit">Valider mes réponses</button>{% endif %}
|
||||||
</form>
|
</form>
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
|
|
@ -17,7 +17,11 @@
|
||||||
href="{% yt_playlist musikgame %}"
|
href="{% yt_playlist musikgame %}"
|
||||||
role="button"
|
role="button"
|
||||||
{% if musikgame.playlist_loading %}aria-busy="true"{% endif %}><i class="ri-youtube-fill"></i> Playlist</a>
|
{% if musikgame.playlist_loading %}aria-busy="true"{% endif %}><i class="ri-youtube-fill"></i> Playlist</a>
|
||||||
{% if not musikgame.over %}
|
{% if musikgame.over %}
|
||||||
|
<a href="{% url "game_answer" musikgame.pk %}"
|
||||||
|
role="button"
|
||||||
|
class="secondary"><i class="ri-play-list-2-fill"></i> Mes réponses</a>
|
||||||
|
{% else %}
|
||||||
<a href="{% url "game_answer" musikgame.pk %}" role="button"><i class="ri-play-list-2-fill"></i> Répondre</a>
|
<a href="{% url "game_answer" musikgame.pk %}" role="button"><i class="ri-play-list-2-fill"></i> Répondre</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -434,7 +434,7 @@ class GameAnswerView(LoginRequiredMixin, DetailView):
|
||||||
template_name = "game/musikgame_answer.html"
|
template_name = "game/musikgame_answer.html"
|
||||||
|
|
||||||
def get_queryset(self):
|
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):
|
def get_context_data(self, **kwargs):
|
||||||
return super().get_context_data(**kwargs) | {
|
return super().get_context_data(**kwargs) | {
|
||||||
|
@ -443,6 +443,8 @@ class GameAnswerView(LoginRequiredMixin, DetailView):
|
||||||
|
|
||||||
def post(self, request, pk):
|
def post(self, request, pk):
|
||||||
game = self.get_object()
|
game = self.get_object()
|
||||||
|
if game.over:
|
||||||
|
raise PermissionDenied()
|
||||||
for music in game.musicgameorder_set.all():
|
for music in game.musicgameorder_set.all():
|
||||||
answer = request.POST.get(f"answer-{music.order}")
|
answer = request.POST.get(f"answer-{music.order}")
|
||||||
if answer:
|
if answer:
|
||||||
|
@ -469,16 +471,28 @@ class GameEndView(LoginRequiredMixin, SingleObjectMixin, View):
|
||||||
raise PermissionDenied()
|
raise PermissionDenied()
|
||||||
game.over = True
|
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():
|
for player in game.players.all():
|
||||||
score = (
|
score = sum(
|
||||||
100
|
[
|
||||||
* player.musicgameanswer_set.filter(game__game=game)
|
value[ga.game.pk]
|
||||||
|
for ga in player.musicgameanswer_set.filter(game__game=game)
|
||||||
.exclude(game__player=player)
|
.exclude(game__player=player)
|
||||||
.filter(game__player=F("answer"))
|
.filter(game__player=F("answer"))
|
||||||
.count()
|
]
|
||||||
)
|
)
|
||||||
score -= (
|
score -= (
|
||||||
50
|
500
|
||||||
* player.musicgameanswer_set.filter(game__game=game)
|
* player.musicgameanswer_set.filter(game__game=game)
|
||||||
.filter(game__player=player)
|
.filter(game__player=player)
|
||||||
.exclude(game__player=F("answer"))
|
.exclude(game__player=F("answer"))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue