]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Fix: Clear metadata cache when the filename(s) change (#5957)
authorTrenton H <797416+stumpylog@users.noreply.github.com>
Thu, 29 Feb 2024 18:34:15 +0000 (10:34 -0800)
committerGitHub <noreply@github.com>
Thu, 29 Feb 2024 18:34:15 +0000 (10:34 -0800)
* 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
src/documents/signals/handlers.py

index d80f319f74e9168639d1be22bb2a7cb275d393fb..a1f20d0867db12ff151fc812a8ba854e2e9df29b 100644 (file)
@@ -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
index b8067df8653d384797c04e8835f5fc0b892b0cba..b6903d98cf23684f6b1995eea444895e0ea5c23c 100644 (file)
@@ -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}")