Skip to content

Commit 13711fb

Browse files
authored
add signals to delete files (#243)
* add signals to delete files * fix flake8 error
1 parent aa91f95 commit 13711fb

File tree

4 files changed

+43
-2
lines changed

4 files changed

+43
-2
lines changed

client/src/views/EmailVerificationView.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { defineProps, onMounted, ref } from 'vue'
2+
import { onMounted, ref } from 'vue'
33
import { useMessageStore } from '@/stores/message'
44
import { useRouter } from 'vue-router'
55
import { useUserStore } from '@/stores/user'

client/src/views/ForgotPasswordView.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { defineProps, onMounted, ref } from 'vue'
2+
import { onMounted, ref } from 'vue'
33
import { useMessageStore } from '@/stores/message'
44
import { useUserStore } from '@/stores/user'
55
import { useModalStore } from '@/stores/modal'

server/bingo/apps.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,6 @@
44
class BingoConfig(AppConfig):
55
default_auto_field = "django.db.models.BigAutoField"
66
name = "bingo"
7+
8+
def ready(self):
9+
import bingo.signals # noqa

server/bingo/signals.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from .models import TileInteraction
2+
import os
3+
from django.dispatch import receiver
4+
from django.db.models.signals import post_delete, pre_save
5+
6+
# modified from https://stackoverflow.com/a/16041527
7+
8+
9+
@receiver(post_delete, sender=TileInteraction)
10+
def auto_delete_file_on_delete(sender, instance, **kwargs):
11+
"""
12+
Deletes file from filesystem
13+
when corresponding `TileInteraction` object is deleted.
14+
"""
15+
if instance.image:
16+
if os.path.isfile(instance.image.path):
17+
os.remove(instance.image.path)
18+
19+
20+
@receiver(pre_save, sender=TileInteraction)
21+
def auto_delete_file_on_change(sender, instance, **kwargs):
22+
"""
23+
Deletes old file from filesystem
24+
when corresponding `TileInteraction` object is updated
25+
with new file.
26+
"""
27+
if not instance.pk:
28+
return False
29+
30+
try:
31+
old_image = TileInteraction.objects.get(pk=instance.pk).image
32+
except TileInteraction.DoesNotExist:
33+
return False
34+
35+
new_image = instance.image
36+
if old_image and not old_image == new_image:
37+
if os.path.isfile(old_image.path):
38+
os.remove(old_image.path)

0 commit comments

Comments
 (0)