Add signal to delete YouTube playlist on MusikGame deletion

This commit is contained in:
Edgar P. Burkhart 2025-06-14 16:03:51 +02:00
parent 562bd3d205
commit 51b44bcec1
Signed by: edpibu
GPG key ID: 9833D3C5A25BD227

View file

@ -1,6 +1,10 @@
import google.oauth2.credentials
import googleapiclient.discovery
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.db import models from django.db import models
from django.db.models.functions import Lower 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 from django.urls import reverse
@ -53,6 +57,20 @@ class MusikGame(models.Model):
return reverse("game_detail", kwargs={"pk": self.pk}) 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): class MusicGameOrder(models.Model):
game = models.ForeignKey(MusikGame, on_delete=models.CASCADE) game = models.ForeignKey(MusikGame, on_delete=models.CASCADE)
player = models.ForeignKey(User, on_delete=models.CASCADE) player = models.ForeignKey(User, on_delete=models.CASCADE)