From e6d757c0691414cd43e6e63fc2312d8bbf18b9bc Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Mon, 16 Jun 2025 15:18:56 +0200 Subject: [PATCH 1/7] Update button text in musikgame_answer template for clarity Fix #6 --- game/templates/game/musikgame_answer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/templates/game/musikgame_answer.html b/game/templates/game/musikgame_answer.html index 84e055d..f947802 100644 --- a/game/templates/game/musikgame_answer.html +++ b/game/templates/game/musikgame_answer.html @@ -21,6 +21,6 @@ {% endfor %} - {% if not musikgame.over %}{% endif %} + {% if not musikgame.over %}{% endif %} {% endblock content %} From cb3518a5e517b68d967352e22006543dc65ab86a Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Mon, 16 Jun 2025 15:23:19 +0200 Subject: [PATCH 2/7] Change playlist privacy status from private to unlisted in generate_playlist task Fix #7 --- game/tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/tasks.py b/game/tasks.py index 22a7dc0..61937d0 100644 --- a/game/tasks.py +++ b/game/tasks.py @@ -18,7 +18,7 @@ def generate_playlist(creds, game_pk): "description": "Playlist générée par Musik", }, "status": { - "privacyStatus": "private", + "privacyStatus": "unlisted", }, }, ) From 22bb6931e820fa924098dda747b20739a77d7722 Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Mon, 16 Jun 2025 15:29:40 +0200 Subject: [PATCH 3/7] Remove individual blacklisting of music in GameCreateView and update all related music to blacklisted in GameEndView Fix #8 --- game/views.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/game/views.py b/game/views.py index d5f3b7d..20fedff 100644 --- a/game/views.py +++ b/game/views.py @@ -327,8 +327,6 @@ class GameCreateView(LoginRequiredMixin, CreateView): pm_list = list(zip(players, musics)) random.shuffle(pm_list) for (player, music), order in zip(pm_list, range(1, len(pm_list) + 1)): - music.blacklisted = True - music.save() models.MusicGameOrder.objects.create( game=form.instance, player=player, music_video=music, order=order ) @@ -481,6 +479,9 @@ class GameEndView(LoginRequiredMixin, SingleObjectMixin, View): if not game.group.is_leader(request.user): raise PermissionDenied() game.over = True + models.MusicVideo.objects.filter(musicgameorder__game=game).update( + blacklisted=True + ) for go in game.musicgameorder_set.all(): go.update_value() From 0b8ce65a0af6d3e6e8832c924cbb27f7ef753bae Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Mon, 16 Jun 2025 15:33:23 +0200 Subject: [PATCH 4/7] Fix playlist display logic in musikgame_detail template Fix #9 --- game/templates/game/musikgame_detail.html | 40 +++++++++++------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/game/templates/game/musikgame_detail.html b/game/templates/game/musikgame_detail.html index 67b9921..66708c0 100644 --- a/game/templates/game/musikgame_detail.html +++ b/game/templates/game/musikgame_detail.html @@ -9,31 +9,31 @@ {% endif %} {{ musikgame.date }} - {% if musikgame.playlist or musikgame.playlist_loading %} -
- {% csrf_token %} -
+ + {% csrf_token %} +
+ {% if musikgame.playlist or musikgame.playlist_loading %} Playlist - {% if musikgame.over %} - Mes réponses - {% else %} - Répondre - {% endif %} -
- {% if is_leader and not musikgame.over %} -
- -
{% endif %} - - {% endif %} + {% if musikgame.over %} + Mes réponses + {% else %} + Répondre + {% endif %} +
+ {% if is_leader and not musikgame.over %} +
+ +
+ {% endif %} +

Joueurs

From 951128147cb561f223a5b20075a9ed32dd9dab11 Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Mon, 16 Jun 2025 15:44:17 +0200 Subject: [PATCH 5/7] Fix playlist loading logic in MusikGame creation and update related template messages Fix #10 --- game/models.py | 3 +++ game/templates/game/musikgame_form.html | 8 +++++--- game/views.py | 5 ++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/game/models.py b/game/models.py index 18912a0..51eb410 100644 --- a/game/models.py +++ b/game/models.py @@ -99,6 +99,9 @@ def generateYoutubePlaylist(sender, instance, created, **kwargs): if creds := instance.group.owner.youtubecredentials: tasks.generate_playlist.delay_on_commit(creds.credentials, instance.pk) + else: + instance.playlist_loading = False + instance.save() @receiver(post_delete, sender=MusikGame) diff --git a/game/templates/game/musikgame_form.html b/game/templates/game/musikgame_form.html index 38ed5b6..655723a 100644 --- a/game/templates/game/musikgame_form.html +++ b/game/templates/game/musikgame_form.html @@ -5,10 +5,12 @@ {{ group.name }}

- {% if not user.youtubecredentials.credentials %} - Me connecter au compte Youtube + {% if group.owner.youtubecredentials.credentials %} + Une playlist sera générée automatiquement sur le compte Youtube de {{ group.owner }} ({{ group.owner.youtubecredentials.title }}). + {% elif user == group.owner %} + Connecter mon compte Youtube {% else %} - Une playlist sera générée automatiquement sur le compte Youtube {{ user.youtubecredentials.title }}. + Aucune playlist Youtube ne sera générée car {{ group.owner }} n'a pas lié son compte Youtube. {% endif %}

{% form form %} diff --git a/game/views.py b/game/views.py index 20fedff..45685aa 100644 --- a/game/views.py +++ b/game/views.py @@ -331,9 +331,8 @@ class GameCreateView(LoginRequiredMixin, CreateView): game=form.instance, player=player, music_video=music, order=order ) - if models.YoutubeCredentials.objects.filter(user=self.request.user).exists(): - form.instance.playlist_loading = True - form.instance.save() + form.instance.playlist_loading = True + form.instance.save() return res From c639307cfbe5ca0808ac85be8cbd8841a50a956c Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Mon, 16 Jun 2025 15:44:37 +0200 Subject: [PATCH 6/7] Add restart policy for RabbitMQ and Postgres services in Docker Compose Fix #11 --- compose.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compose.yaml b/compose.yaml index 04838ec..a6ee8b3 100644 --- a/compose.yaml +++ b/compose.yaml @@ -32,10 +32,12 @@ services: rabbitmq: image: rabbitmq container_name: musik_rabbitmq + restart: unless-stopped postgres: image: postgres:17 container_name: musik_postgres + restart: unless-stopped env_file: stack.env volumes: - /docker/musik/postgres:/var/lib/postgresql/data From 84c432c325bc48d02b8474d16241d01e88df66e9 Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Mon, 16 Jun 2025 16:16:03 +0200 Subject: [PATCH 7/7] Refactor value calculation in MusicGameOrder to improve scoring logic Fix #13 Close #12 --- game/models.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/game/models.py b/game/models.py index 51eb410..153583f 100644 --- a/game/models.py +++ b/game/models.py @@ -121,13 +121,10 @@ class MusicGameOrder(models.Model): value = models.PositiveIntegerField(default=0) def update_value(self): - n_right = self.musicgameanswer_set.filter(game__player=F("answer")).count() - if n_right == 0: - self.value = 1000 - else: - self.value = 1000 / ( - 1 + ((n_right - 1) / (self.game.players.count() - 1)) ** 0.5 - ) + x = self.musicgameanswer_set.filter(game__player=F("answer")).count() + n = self.game.players.count() + n = max(3, n) + self.value = 1000 * 2 ** (-(x - 2) / (n - 2)) self.save() class Meta: