Skip to content

Commit

Permalink
Handle media file deletion in post_delete signal handler
Browse files Browse the repository at this point in the history
Re #12
  • Loading branch information
Ferdinand Hoffmann committed Mar 9, 2021
1 parent 51de278 commit 63115d5
Showing 1 changed file with 8 additions and 18 deletions.
26 changes: 8 additions & 18 deletions wagtail_to_ion/models/file_based_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import os

from django.db import models
from django.db.models.signals import post_delete
from django.dispatch import receiver
from django.utils.functional import cached_property
from django.utils.translation import ugettext_lazy as _

Expand Down Expand Up @@ -203,20 +205,6 @@ def save(self, *args, **kwargs):
if needs_transcode:
self.create_renditions()

def delete(self, *args, **kwargs):
try:
self.file.delete()
except ValueError:
pass
try:
self.thumbnail.delete()
except ValueError:
pass
# delete one by one to make sure files are deleted
for rendition in self.renditions.all():
rendition.delete()
super().delete(*args, **kwargs)

def set_media_metadata(self):
self.file.open()
h = hashlib.new('sha256')
Expand Down Expand Up @@ -297,16 +285,18 @@ class Meta:
def __str__(self):
return "IonMediaRendition {} for {}".format(self.name, self.media_item)

def delete(self, *args, **kwargs):

@receiver(post_delete)
def remove_media_files(sender, instance, **kwargs):
if isinstance(instance, (AbstractIonMedia, AbstractIonMediaRendition)):
try:
self.file.delete()
instance.file.delete(save=False)
except ValueError:
pass
try:
self.thumbnail.delete()
instance.thumbnail.delete(save=False)
except ValueError:
pass
super().delete(*args, **kwargs)


class IonMediaBlock(AbstractMediaChooserBlock):
Expand Down

0 comments on commit 63115d5

Please sign in to comment.