mirror of
https://github.com/meeb/tubesync.git
synced 2025-06-23 13:36:35 +00:00
Mark the directory for removal after the Source is deleted
This commit is contained in:
parent
bdf9a69f48
commit
453b9eaa79
@ -1,4 +1,5 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from shutil import rmtree
|
||||||
from tempfile import TemporaryDirectory
|
from tempfile import TemporaryDirectory
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db.models.signals import pre_save, post_save, pre_delete, post_delete
|
from django.db.models.signals import pre_save, post_save, pre_delete, post_delete
|
||||||
@ -151,6 +152,11 @@ def source_post_delete(sender, instance, **kwargs):
|
|||||||
# Triggered after a source is deleted
|
# Triggered after a source is deleted
|
||||||
log.info(f'Deleting tasks for source: {instance.name}')
|
log.info(f'Deleting tasks for source: {instance.name}')
|
||||||
delete_task_by_source('sync.tasks.index_source_task', instance.pk)
|
delete_task_by_source('sync.tasks.index_source_task', instance.pk)
|
||||||
|
source = instance
|
||||||
|
# Remove the directory, if the user requested that
|
||||||
|
directory_path = Path(source.directory_path)
|
||||||
|
if (directory_path / '.to_be_removed').is_file():
|
||||||
|
rmtree(directory_path, True)
|
||||||
|
|
||||||
|
|
||||||
@receiver(task_failed, sender=Task)
|
@receiver(task_failed, sender=Task)
|
||||||
|
@ -3,7 +3,6 @@ import os
|
|||||||
import json
|
import json
|
||||||
from base64 import b64decode
|
from base64 import b64decode
|
||||||
import pathlib
|
import pathlib
|
||||||
import shutil
|
|
||||||
import sys
|
import sys
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.http import FileResponse, Http404, HttpResponseNotFound, HttpResponseRedirect
|
from django.http import FileResponse, Http404, HttpResponseNotFound, HttpResponseRedirect
|
||||||
@ -415,15 +414,8 @@ class DeleteSourceView(DeleteView, FormMixin):
|
|||||||
delete_media = True if delete_media_val is not False else False
|
delete_media = True if delete_media_val is not False else False
|
||||||
if delete_media:
|
if delete_media:
|
||||||
source = self.get_object()
|
source = self.get_object()
|
||||||
for media in Media.objects.filter(source=source):
|
directory_path = pathlib.Path(source.directory_path)
|
||||||
if media.media_file:
|
(directory_path / '.to_be_removed').touch(exist_ok=True)
|
||||||
file_path = media.media_file.path
|
|
||||||
matching_files = glob.glob(os.path.splitext(file_path)[0] + '.*')
|
|
||||||
for file in matching_files:
|
|
||||||
delete_file(file)
|
|
||||||
directory_path = source.directory_path
|
|
||||||
if os.path.exists(directory_path):
|
|
||||||
shutil.rmtree(directory_path, True)
|
|
||||||
return super().post(request, *args, **kwargs)
|
return super().post(request, *args, **kwargs)
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user