Skip to content
This repository was archived by the owner on Mar 15, 2018. It is now read-only.

Commit 02b6cfb

Browse files
author
Andy McKay
committed
make sure deleting a version calls the file cleanup signal (bug 709648)
1 parent cbb9878 commit 02b6cfb

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

apps/files/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,8 @@ def cleanup_file(sender, instance, **kw):
501501
except models.ObjectDoesNotExist:
502502
return
503503
if os.path.exists(filename):
504+
log.info('Removing filename: %s for file: %s'
505+
% (filename, instance.pk))
504506
os.remove(filename)
505507

506508

apps/files/tests/test_models.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ def check_delete(self, file_, filename):
9999
if os.path.exists(filename):
100100
os.remove(filename)
101101

102+
def test_delete_by_version(self):
103+
f = File.objects.get(pk=67442)
104+
version = f.version
105+
self.check_delete(version, f.file_path)
106+
102107
def test_delete_file_path(self):
103108
f = File.objects.get(pk=67442)
104109
self.check_delete(f, f.file_path)

apps/versions/models.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,14 @@ def update_incompatible_versions(sender, instance, **kw):
366366
tasks.update_incompatible_appversions.delay([instance.id])
367367

368368

369+
def cleanup_version(sender, instance, **kw):
370+
"""On delete of the version object call the file delete and signals."""
371+
if kw.get('raw'):
372+
return
373+
for file_ in instance.all_files:
374+
file_.delete()
375+
376+
369377
version_uploaded = django.dispatch.Signal()
370378
models.signals.post_save.connect(update_status, sender=Version,
371379
dispatch_uid='version_update_status')
@@ -375,8 +383,11 @@ def update_incompatible_versions(sender, instance, **kw):
375383
dispatch_uid='version_update_status')
376384
models.signals.post_save.connect(update_incompatible_versions, sender=Version,
377385
dispatch_uid='version_update_incompat')
378-
models.signals.post_delete.connect(update_incompatible_versions, sender=Version,
386+
models.signals.post_delete.connect(update_incompatible_versions,
387+
sender=Version,
379388
dispatch_uid='version_update_incompat')
389+
models.signals.pre_delete.connect(cleanup_version, sender=Version,
390+
dispatch_uid='cleanup_version')
380391

381392

382393
class LicenseManager(amo.models.ManagerBase):

0 commit comments

Comments
 (0)