From 723e7f4248ee05ffe22250989579364a4fa41973 Mon Sep 17 00:00:00 2001 From: xpltd Date: Sat, 21 Mar 2026 23:34:50 -0500 Subject: [PATCH] Fix purge: use full relative path for file deletion, clean empty dirs - Bug: purge used Path(filename).name which stripped subdirectories, so files like 'jawed/Me at the zoo.webm' were never found/deleted - Fix: use output_dir / filename (preserves relative path) - Also: clean up empty parent directories after file deletion so uploader folders like 'jawed/' don't linger as empty dirs --- backend/app/services/purge.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/backend/app/services/purge.py b/backend/app/services/purge.py index 18d29c1..100757e 100644 --- a/backend/app/services/purge.py +++ b/backend/app/services/purge.py @@ -74,12 +74,21 @@ async def run_purge( # Delete file from disk if it exists if filename: - file_path = output_dir / Path(filename).name + file_path = output_dir / filename if file_path.is_file(): try: file_path.unlink() files_deleted += 1 logger.debug("Purge: deleted file %s (job %s)", file_path, job_id) + # Clean up empty parent directories up to output_dir + parent = file_path.parent + while parent != output_dir: + try: + parent.rmdir() # only removes if empty + logger.debug("Purge: removed empty dir %s", parent) + parent = parent.parent + except OSError: + break except OSError as e: logger.warning("Purge: failed to delete %s: %s", file_path, e) else: