mirror of
https://github.com/meeb/tubesync.git
synced 2025-06-24 22:16:37 +00:00
Hackish solution to the slow deletion of media
This commit is contained in:
parent
b223e795e0
commit
4c101e49c0
@ -410,11 +410,38 @@ class DeleteSourceView(DeleteView, FormMixin):
|
||||
context_object_name = 'source'
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
source = self.get_object()
|
||||
media_source = dict(
|
||||
uuid=None,
|
||||
index_schedule=IndexSchedule.NEVER,
|
||||
download_media=False,
|
||||
index_videos=False,
|
||||
index_streams=False,
|
||||
filter_text=str(source.pk),
|
||||
)
|
||||
copy_fields = set(map(lambda f: f.name, source._meta.fields)) - set(media_source.keys())
|
||||
for k, v in source.__dict__.items():
|
||||
if k in copy_fields:
|
||||
media_source[k] = v
|
||||
media_source = Source(**media_source)
|
||||
delete_media_val = request.POST.get('delete_media', False)
|
||||
delete_media = True if delete_media_val is not False else False
|
||||
# overload this boolean for our own use
|
||||
media_source.delete_removed_media = delete_media
|
||||
# adjust the directory and key on the source to be deleted
|
||||
source.directory = source.directory + '/deleted'
|
||||
source.key = source.key + '/deleted'
|
||||
source.name = f'[Deleting] {source.name}'
|
||||
source.save(update_fields={'directory', 'key', 'name'})
|
||||
source.refresh_from_db()
|
||||
# save the new media source now that it is not a duplicate
|
||||
media_source.uuid = None
|
||||
media_source.save()
|
||||
media_source.refresh_from_db()
|
||||
# switch the media to the new source instance
|
||||
Media.objects.filter(source=source).update(source=media_source)
|
||||
if delete_media:
|
||||
source = self.get_object()
|
||||
directory_path = pathlib.Path(source.directory_path)
|
||||
directory_path = pathlib.Path(media_source.directory_path)
|
||||
mkdir_p(directory_path)
|
||||
(directory_path / '.to_be_removed').touch(exist_ok=True)
|
||||
return super().post(request, *args, **kwargs)
|
||||
|
Loading…
Reference in New Issue
Block a user