From 51b44bcec145902d1520d0ab713168f20b862d4d Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Sat, 14 Jun 2025 16:03:51 +0200 Subject: [PATCH] Add signal to delete YouTube playlist on MusikGame deletion --- game/models.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/game/models.py b/game/models.py index d207cb6..bf2320e 100644 --- a/game/models.py +++ b/game/models.py @@ -1,6 +1,10 @@ +import google.oauth2.credentials +import googleapiclient.discovery from django.contrib.auth.models import User from django.db import models from django.db.models.functions import Lower +from django.db.models.signals import post_delete +from django.dispatch import receiver from django.urls import reverse @@ -53,6 +57,20 @@ class MusikGame(models.Model): return reverse("game_detail", kwargs={"pk": self.pk}) +@receiver(post_delete, sender=MusikGame) +def deleteYoutubePlaylist(sender, instance, using, **kwargs): + if not instance.playlist: + return + + game = instance + credentials = google.oauth2.credentials.Credentials( + **game.group.owner.youtubecredentials.credentials + ) + yt_api = googleapiclient.discovery.build("youtube", "v3", credentials=credentials) + pl_request = yt_api.playlists().delete(id=game.playlist) + pl_request.execute() + + class MusicGameOrder(models.Model): game = models.ForeignKey(MusikGame, on_delete=models.CASCADE) player = models.ForeignKey(User, on_delete=models.CASCADE)