From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:43:38 +0000 (-0700) Subject: Enhancement: ignore same files in sanity checker as consumer X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e98aae261a5ba84367aa6efe35f3432d115acb9f;p=thirdparty%2Fpaperless-ngx.git Enhancement: ignore same files in sanity checker as consumer --- diff --git a/src/documents/sanity_checker.py b/src/documents/sanity_checker.py index 76c35073c..5e5510971 100644 --- a/src/documents/sanity_checker.py +++ b/src/documents/sanity_checker.py @@ -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() diff --git a/src/documents/tests/test_sanity_check.py b/src/documents/tests/test_sanity_check.py index c33062c42..fff5f2528 100644 --- a/src/documents/tests/test_sanity_check.py +++ b/src/documents/tests/test_sanity_check.py @@ -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 diff --git a/src/paperless/settings.py b/src/paperless/settings.py index af1d57891..97d0ca06f 100644 --- a/src/paperless/settings.py +++ b/src/paperless/settings.py @@ -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), ), ), )