]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Enhancement: ignore same files in sanity checker as consumer feature-sanity-ignore-files 10999/head
authorshamoon <4887959+shamoon@users.noreply.github.com>
Sat, 4 Oct 2025 14:43:38 +0000 (07:43 -0700)
committershamoon <4887959+shamoon@users.noreply.github.com>
Sat, 4 Oct 2025 14:43:38 +0000 (07:43 -0700)
src/documents/sanity_checker.py
src/documents/tests/test_sanity_check.py
src/paperless/settings.py

index 76c35073ce7c7e54dd99922e034f9c203b6bff88..5e5510971d81a808b748b6f523ef6c9e318c184e 100644 (file)
@@ -76,7 +76,9 @@ def check_sanity(*, progress=False, scheduled=True) -> SanityCheckMessages:
     messages = SanityCheckMessages()
 
     present_files = {
-        x.resolve() for x in Path(settings.MEDIA_ROOT).glob("**/*") if not x.is_dir()
+        x.resolve()
+        for x in Path(settings.MEDIA_ROOT).glob("**/*")
+        if not x.is_dir() and x.name not in settings.IGNORABLE_FILES
     }
 
     lockfile = Path(settings.MEDIA_LOCK).resolve()
index c33062c428892f95fa619284d290bd49166d327f..fff5f25286a78e1e8c4806589c8ff2024a49b988 100644 (file)
@@ -169,6 +169,13 @@ class TestSanityCheck(DirectoriesMixin, TestCase):
         messages = check_sanity()
         self.assertFalse(messages.has_warning)
 
+    def test_ignore_ignorable_files(self):
+        self.make_test_data()
+        Path(self.dirs.media_dir, ".DS_Store").touch()
+        Path(self.dirs.media_dir, "desktop.ini").touch()
+        messages = check_sanity()
+        self.assertFalse(messages.has_warning)
+
     def test_archive_filename_no_checksum(self):
         doc = self.make_test_data()
         doc.archive_checksum = None
index af1d57891ad781c7fba282a7cea8f1f2d61db444..97d0ca06f30aaf51bd1429f6445da4d4c6665148 100644 (file)
@@ -1003,6 +1003,18 @@ THREADS_PER_WORKER = os.getenv(
 # Paperless Specific Settings                                                 #
 ###############################################################################
 
+IGNORABLE_FILES: Final[list[str]] = [
+    ".DS_Store",
+    ".DS_STORE",
+    "._*",
+    ".stfolder/*",
+    ".stversions/*",
+    ".localized/*",
+    "desktop.ini",
+    "@eaDir/*",
+    "Thumbs.db",
+]
+
 CONSUMER_POLLING = int(os.getenv("PAPERLESS_CONSUMER_POLLING", 0))
 
 CONSUMER_POLLING_DELAY = int(os.getenv("PAPERLESS_CONSUMER_POLLING_DELAY", 5))
@@ -1025,7 +1037,7 @@ CONSUMER_IGNORE_PATTERNS = list(
     json.loads(
         os.getenv(
             "PAPERLESS_CONSUMER_IGNORE_PATTERNS",
-            '[".DS_Store", ".DS_STORE", "._*", ".stfolder/*", ".stversions/*", ".localized/*", "desktop.ini", "@eaDir/*", "Thumbs.db"]',
+            json.dumps(IGNORABLE_FILES),
         ),
     ),
 )