From 5510054961a9eaa445f72117b0c2f0e81f76f99e Mon Sep 17 00:00:00 2001 From: Chneemann Date: Sun, 11 Aug 2024 09:23:49 +0200 Subject: [PATCH] add signal handler to auto-delete video file on Video model deletion --- backend/videoflix/content/apps.py | 3 +++ backend/videoflix/content/signals.py | 14 ++++++++++++++ backend/videoflix/videoflix/settings.py | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 backend/videoflix/content/signals.py diff --git a/backend/videoflix/content/apps.py b/backend/videoflix/content/apps.py index 273d169..36ece36 100644 --- a/backend/videoflix/content/apps.py +++ b/backend/videoflix/content/apps.py @@ -4,3 +4,6 @@ from django.apps import AppConfig class ContentConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'content' + + def ready(self): + from . import signals diff --git a/backend/videoflix/content/signals.py b/backend/videoflix/content/signals.py new file mode 100644 index 0000000..6684ead --- /dev/null +++ b/backend/videoflix/content/signals.py @@ -0,0 +1,14 @@ +from .models import Video +from django.dispatch import receiver +from django.db.models.signals import post_delete +import os + +@receiver(post_delete, sender=Video) +def auto_delete_file_on_delete(sender, instance, **kwargs): + """ + Deletes file from filesystem + when corresponding `Video` object is deleted. + """ + if instance.video_file: + if os.path.isfile(instance.video_file.path): + os.remove(instance.video_file.path) \ No newline at end of file diff --git a/backend/videoflix/videoflix/settings.py b/backend/videoflix/videoflix/settings.py index 03d4ba9..68c7c86 100644 --- a/backend/videoflix/videoflix/settings.py +++ b/backend/videoflix/videoflix/settings.py @@ -51,7 +51,7 @@ INSTALLED_APPS = [ 'rest_framework.authtoken', 'rest_framework', 'corsheaders', - 'content', + 'content.apps.ContentConfig', 'users', ]