From cc38d72df822d992f99df3349bd1caafea3ffd4b Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Sun, 15 Jun 2025 16:20:53 +0200 Subject: [PATCH] Add migration to alter MusicVideo model options and update group detail form to use textarea for YouTube IDs --- .../0023_alter_musicvideo_options.py | 16 +++++++ game/models.py | 1 + game/templates/game/group_detail.html | 4 +- game/views.py | 43 ++++++++++--------- 4 files changed, 42 insertions(+), 22 deletions(-) create mode 100644 game/migrations/0023_alter_musicvideo_options.py diff --git a/game/migrations/0023_alter_musicvideo_options.py b/game/migrations/0023_alter_musicvideo_options.py new file mode 100644 index 0000000..ee96adb --- /dev/null +++ b/game/migrations/0023_alter_musicvideo_options.py @@ -0,0 +1,16 @@ +# Generated by Django 5.2.3 on 2025-06-15 14:19 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("game", "0022_musicgameorder_value"), + ] + + operations = [ + migrations.AlterModelOptions( + name="musicvideo", + options={"ordering": ["blacklisted", "-date_added"]}, + ), + ] diff --git a/game/models.py b/game/models.py index ef85fd8..18912a0 100644 --- a/game/models.py +++ b/game/models.py @@ -66,6 +66,7 @@ class MusicVideo(models.Model): fields=("yt_id", "owner", "group"), name="unique_music_in_group" ) ] + ordering = ["blacklisted", "-date_added"] class GameManager(models.Manager): diff --git a/game/templates/game/group_detail.html b/game/templates/game/group_detail.html index 3812b6e..c5165f0 100644 --- a/game/templates/game/group_detail.html +++ b/game/templates/game/group_detail.html @@ -71,8 +71,8 @@
{% csrf_token %} -
- +
+
diff --git a/game/views.py b/game/views.py index 31c74f9..9ee29ca 100644 --- a/game/views.py +++ b/game/views.py @@ -104,28 +104,31 @@ class GroupAddMusicView(MemberFilterMixin, SingleObjectMixin, View): def post(self, request, pk): group = self.get_object() - yt_id = request.POST.get("yt_id") - if not yt_id: - messages.add_message(request, messages.ERROR, "Aucun identifiant donné") - return redirect(group) - yt_id = utils.parse_musik(yt_id) + ids = request.POST.get("yt_id") + for yt_id in ids.split(): + if not yt_id: + messages.add_message(request, messages.ERROR, "Aucun identifiant donné") + return redirect(group) + yt_id = utils.parse_musik(yt_id) - title = utils.get_yt_title(yt_id) - if not title: - messages.add_message( - request, messages.ERROR, f"Vidéo Youtube invalide : {yt_id}" - ) - return redirect(group) - try: - group.musicvideo_set.create(yt_id=yt_id, title=title, owner=request.user) - except IntegrityError: - messages.add_message( - request, messages.ERROR, f"Vidéo Youtube déjà ajoutée : {yt_id}" - ) + title = utils.get_yt_title(yt_id) + if not title: + messages.add_message( + request, messages.ERROR, f"Vidéo Youtube invalide : {yt_id}" + ) + else: + try: + group.musicvideo_set.create( + yt_id=yt_id, title=title, owner=request.user + ) + except IntegrityError: + messages.add_message( + request, messages.ERROR, f"Vidéo Youtube déjà ajoutée : {yt_id}" + ) - messages.add_message( - request, messages.SUCCESS, f"Vidéo Youtube ajoutée : {yt_id}" - ) + messages.add_message( + request, messages.SUCCESS, f"Vidéo Youtube ajoutée : {yt_id}" + ) return redirect(group)