From e5e012e6be418f54091497049864b9b1b2646a8d Mon Sep 17 00:00:00 2001 From: rlacko <rlacko@sch.bme.hu> Date: Sun, 9 Feb 2020 00:44:02 +0100 Subject: [PATCH] delete images from file system --- src/account/views.py | 1 + src/images/models.py | 10 ++++++++++ src/kszkepzes/settings/base.py | 2 +- src/mentors/models.py | 10 ++++++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/account/views.py b/src/account/views.py index 4f88c51..48c33ed 100644 --- a/src/account/views.py +++ b/src/account/views.py @@ -3,6 +3,7 @@ from rest_framework import permissions from rest_framework.response import Response from rest_framework.decorators import action from common.permissions import IsSafeOrPatch +from django.db.models import Sum from . import models from . import serializers diff --git a/src/images/models.py b/src/images/models.py index b1f898e..cab2442 100644 --- a/src/images/models.py +++ b/src/images/models.py @@ -1,4 +1,7 @@ +import os + from django.db import models +from django.dispatch import receiver class Image(models.Model): @@ -8,3 +11,10 @@ class Image(models.Model): def __str__(self): return str(self.id) + +# Deletes file from filesystem when File object is deleted. +@receiver(models.signals.post_delete, sender=Image) +def auto_delete_image_on_delete(sender, instance, **kwargs): + if instance.image: + if os.path.isfile(instance.image.path): + os.remove(instance.image.path) diff --git a/src/kszkepzes/settings/base.py b/src/kszkepzes/settings/base.py index b040f8c..a1ce1fb 100644 --- a/src/kszkepzes/settings/base.py +++ b/src/kszkepzes/settings/base.py @@ -161,4 +161,4 @@ STATIC_URL = '/staticfiles/' STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles") MEDIA_URL = "/mediafiles/" -MEDIA_ROOT = os.path.join(BASE_DIR, "mediafiles") \ No newline at end of file +MEDIA_ROOT = os.path.join(BASE_DIR, "mediafiles") diff --git a/src/mentors/models.py b/src/mentors/models.py index 2d95263..21c9a8d 100644 --- a/src/mentors/models.py +++ b/src/mentors/models.py @@ -1,5 +1,8 @@ +import os + from django.db import models from account.models import Profile +from django.dispatch import receiver class Mentor(models.Model): @@ -16,3 +19,10 @@ class Mentor(models.Model): def __str__(self): return self.name + +# Deletes file from filesystem when File object is deleted. +@receiver(models.signals.post_delete, sender=Mentor) +def auto_delete_image_on_delete(sender, instance, **kwargs): + if instance.image: + if os.path.isfile(instance.image.path): + os.remove(instance.image.path) -- GitLab