From c57c1d5389fd01b52858fb1998b911e1fd4ebb54 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Thu, 29 Feb 2024 10:34:15 -0800 Subject: [PATCH] Fix: Clear metadata cache when the filename(s) change (#5957) * Update doc modified time upon move and rename * Clear the cached metadata if the filename(s) have been changed --------- Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> --- src/documents/caching.py | 5 +++++ src/documents/signals/handlers.py | 3 +++ 2 files changed, 8 insertions(+) diff --git a/src/documents/caching.py b/src/documents/caching.py index d80f319f7..a1f20d086 100644 --- a/src/documents/caching.py +++ b/src/documents/caching.py @@ -189,6 +189,11 @@ def refresh_metadata_cache( cache.touch(doc_key, timeout) +def clear_metadata_cache(document_id: int) -> None: + doc_key = get_metadata_cache_key(document_id) + cache.delete(doc_key) + + def get_thumbnail_modified_key(document_id: int) -> str: """ Builds the key to store a thumbnail's timestamp diff --git a/src/documents/signals/handlers.py b/src/documents/signals/handlers.py index b8067df86..b6903d98c 100644 --- a/src/documents/signals/handlers.py +++ b/src/documents/signals/handlers.py @@ -22,6 +22,7 @@ from django.utils import timezone from filelock import FileLock from documents import matching +from documents.caching import clear_metadata_cache from documents.classifier import DocumentClassifier from documents.consumer import parse_doc_title_w_placeholders from documents.file_handling import create_source_path_directory @@ -434,7 +435,9 @@ def update_filename_and_move_files(sender, instance: Document, **kwargs): Document.objects.filter(pk=instance.pk).update( filename=instance.filename, archive_filename=instance.archive_filename, + modified=timezone.now(), ) + clear_metadata_cache(instance.pk) except (OSError, DatabaseError, CannotMoveFilesException) as e: logger.warning(f"Exception during file handling: {e}")