From 18675da008a03ab00abddbbd7040151e9d919ef0 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 10 Aug 2026 09:04:16 -0700 Subject: [PATCH] Checks for remote_ocr_mode and fix import --- src/paperless/checks.py | 17 +++++++++++++++++ src/paperless/tests/test_checks.py | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/paperless/checks.py b/src/paperless/checks.py index 5d9da91c4..ed3789d4a 100644 --- a/src/paperless/checks.py +++ b/src/paperless/checks.py @@ -337,6 +337,23 @@ def check_deprecated_v2_ocr_env_vars( return warnings +@register() +def check_remote_ocr_mode(app_configs: Any, **kwargs: Any) -> list[Error]: + # Import here because checks.py runs before the app registry is ready + from paperless.models import RemoteOCRMode + + valid_modes = {mode.value for mode in RemoteOCRMode} + if settings.REMOTE_OCR_MODE not in valid_modes: + return [ + Error( + f"PAPERLESS_REMOTE_OCR_MODE is set to {settings.REMOTE_OCR_MODE!r}, " + f"expected one of {sorted(valid_modes)}.", + ), + ] + + return [] + + def get_tesseract_langs(): proc = subprocess.run( [shutil.which("tesseract"), "--list-langs"], diff --git a/src/paperless/tests/test_checks.py b/src/paperless/tests/test_checks.py index b85618a21..94d189908 100644 --- a/src/paperless/tests/test_checks.py +++ b/src/paperless/tests/test_checks.py @@ -15,6 +15,7 @@ from paperless.checks import audit_log_check from paperless.checks import binaries_check from paperless.checks import check_default_language_available from paperless.checks import check_deprecated_db_settings +from paperless.checks import check_remote_ocr_mode from paperless.checks import check_v3_minimum_upgrade_version from paperless.checks import debug_mode_check from paperless.checks import paths_check @@ -630,6 +631,22 @@ class TestV3MinimumUpgradeVersionCheck: assert check_v3_minimum_upgrade_version(None) == [] +class TestRemoteOCRModeCheck: + def test_valid_mode(self, settings: SettingsWrapper) -> None: + settings.REMOTE_OCR_MODE = "workflow_only" + + msgs = check_remote_ocr_mode(None) + + assert len(msgs) == 0 + + def test_invalid_mode(self, settings: SettingsWrapper) -> None: + settings.REMOTE_OCR_MODE = "sometimes" + + msgs = check_remote_ocr_mode(None) + + assert len(msgs) == 1 + assert "PAPERLESS_REMOTE_OCR_MODE is set to 'sometimes'" in msgs[0].msg + class TestTesseractChecks: def test_default_language(self) -> None: check_default_language_available(None)