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