From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Thu, 29 Feb 2024 18:34:15 +0000 (-0800) Subject: Fix: Clear metadata cache when the filename(s) change (#5957) X-Git-Tag: v2.6.0~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c57c1d5389fd01b52858fb1998b911e1fd4ebb54;p=thirdparty%2Fpaperless-ngx.git 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> --- diff --git a/src/documents/caching.py b/src/documents/caching.py index d80f319f74..a1f20d0867 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 b8067df865..b6903d98cf 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}")