2015-12-20 19:23:33 +00:00
|
|
|
from django.apps import AppConfig
|
2021-01-02 00:45:23 +01:00
|
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
|
|
2015-12-20 19:23:33 +00:00
|
|
|
|
|
|
|
|
class DocumentsConfig(AppConfig):
|
2016-03-28 11:11:15 +01:00
|
|
|
name = "documents"
|
|
|
|
|
|
2021-01-02 00:45:23 +01:00
|
|
|
verbose_name = _("Documents")
|
|
|
|
|
|
2016-03-28 11:11:15 +01:00
|
|
|
def ready(self):
|
2023-09-23 20:17:01 -07:00
|
|
|
from documents.signals import document_consumption_finished
|
2024-01-03 00:19:19 -08:00
|
|
|
from documents.signals import document_updated
|
2023-09-23 20:17:01 -07:00
|
|
|
from documents.signals.handlers import add_inbox_tags
|
|
|
|
|
from documents.signals.handlers import add_to_index
|
2024-10-10 13:28:44 -07:00
|
|
|
from documents.signals.handlers import run_workflows_added
|
|
|
|
|
from documents.signals.handlers import run_workflows_updated
|
2023-09-23 20:17:01 -07:00
|
|
|
from documents.signals.handlers import set_correspondent
|
|
|
|
|
from documents.signals.handlers import set_document_type
|
|
|
|
|
from documents.signals.handlers import set_storage_path
|
|
|
|
|
from documents.signals.handlers import set_tags
|
2016-06-24 16:49:32 +02:00
|
|
|
|
2018-09-11 14:30:18 +02:00
|
|
|
document_consumption_finished.connect(add_inbox_tags)
|
2020-10-28 11:45:11 +01:00
|
|
|
document_consumption_finished.connect(set_correspondent)
|
|
|
|
|
document_consumption_finished.connect(set_document_type)
|
|
|
|
|
document_consumption_finished.connect(set_tags)
|
2022-05-19 23:42:25 +02:00
|
|
|
document_consumption_finished.connect(set_storage_path)
|
2020-11-08 11:24:57 +01:00
|
|
|
document_consumption_finished.connect(add_to_index)
|
2024-10-10 13:28:44 -07:00
|
|
|
document_consumption_finished.connect(run_workflows_added)
|
|
|
|
|
document_updated.connect(run_workflows_updated)
|
2016-03-28 11:11:15 +01:00
|
|
|
|
2025-02-10 08:43:07 -08:00
|
|
|
import documents.schema # noqa: F401
|
|
|
|
|
|
2025-11-14 16:08:41 +00:00
|
|
|
# Initialize ML model cache with warm-up if configured
|
|
|
|
|
self._initialize_ml_cache()
|
|
|
|
|
|
2016-03-28 11:11:15 +01:00
|
|
|
AppConfig.ready(self)
|
2025-11-14 16:08:41 +00:00
|
|
|
|
|
|
|
|
def _initialize_ml_cache(self):
|
|
|
|
|
"""Initialize ML model cache and optionally warm up models."""
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
|
|
|
|
|
# Only initialize if ML features are enabled
|
|
|
|
|
if not getattr(settings, "PAPERLESS_ENABLE_ML_FEATURES", False):
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
# Initialize cache manager with settings
|
|
|
|
|
from documents.ml.model_cache import ModelCacheManager
|
|
|
|
|
|
|
|
|
|
max_models = getattr(settings, "PAPERLESS_ML_CACHE_MAX_MODELS", 3)
|
|
|
|
|
cache_dir = getattr(settings, "PAPERLESS_ML_MODEL_CACHE", None)
|
|
|
|
|
|
|
|
|
|
cache_manager = ModelCacheManager.get_instance(
|
|
|
|
|
max_models=max_models,
|
|
|
|
|
disk_cache_dir=str(cache_dir) if cache_dir else None,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Warm up models if configured
|
|
|
|
|
warmup_enabled = getattr(settings, "PAPERLESS_ML_CACHE_WARMUP", False)
|
|
|
|
|
if warmup_enabled:
|
|
|
|
|
try:
|
|
|
|
|
from documents.ai_scanner import get_ai_scanner
|
|
|
|
|
scanner = get_ai_scanner()
|
|
|
|
|
scanner.warm_up_models()
|
|
|
|
|
except Exception as e:
|
|
|
|
|
import logging
|
|
|
|
|
logger = logging.getLogger("paperless.documents")
|
|
|
|
|
logger.warning(f"Failed to warm up ML models: {e}")
|