paperless-ngx/src/documents/apps.py

68 lines
2.7 KiB
Python
Raw Normal View History

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):
name = "documents"
2021-01-02 00:45:23 +01:00
verbose_name = _("Documents")
def ready(self):
from documents.signals import document_consumption_finished
2024-01-03 00:19:19 -08:00
from documents.signals import document_updated
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
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
document_consumption_finished.connect(add_inbox_tags)
document_consumption_finished.connect(set_correspondent)
document_consumption_finished.connect(set_document_type)
document_consumption_finished.connect(set_tags)
Feature: Dynamic document storage pathes (#916) * Added devcontainer * Add feature storage pathes * Exclude tests and add versioning * Check escaping * Check escaping * Check quoting * Echo * Escape * Escape : * Double escape \ * Escaping * Remove if * Escape colon * Missing \ * Esacpe : * Escape all * test * Remove sed * Fix exclude * Remove SED command * Add LD_LIBRARY_PATH * Adjusted to v1.7 * Updated test-cases * Remove devcontainer * Removed internal build-file * Run pre-commit * Corrected flak8 error * Adjusted to v1.7 * Updated test-cases * Corrected flak8 error * Adjusted to new plural translations * Small adjustments due to code-review backend * Adjusted line-break * Removed PAPERLESS prefix from settings variables * Corrected style change due to search+replace * First documentation draft * Revert changes to Pipfile * Add sphinx-autobuild with keep-outdated * Revert merge error that results in wrong storage path is evaluated * Adjust styles of generated files ... * Adds additional testing to cover dynamic storage path functionality * Remove unnecessary condition * Add hint to edit storage path dialog * Correct spelling of pathes to paths * Minor documentation tweaks * Minor typo * improving wrapping of filter editor buttons with new storage path button * Update .gitignore * Fix select border radius in non input-groups * Better storage path edit hint * Add note to edit storage path dialog re document_renamer * Add note to bulk edit storage path re document_renamer * Rename FILTER_STORAGE_DIRECTORY to PATH * Fix broken filter rule parsing * Show default storage if unspecified * Remove note re storage path on bulk edit * Add basic validation of filename variables Co-authored-by: Markus Kling <markus@markus-kling.net> Co-authored-by: Trenton Holmes <holmes.trenton@gmail.com> Co-authored-by: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Co-authored-by: Quinn Casey <quinn@quinncasey.com>
2022-05-19 23:42:25 +02:00
document_consumption_finished.connect(set_storage_path)
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)
import documents.schema # noqa: F401
# Initialize ML model cache with warm-up if configured
self._initialize_ml_cache()
AppConfig.ready(self)
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}")