diff --git a/src/documents/apps.py b/src/documents/apps.py index 699b32865..363f29a07 100644 --- a/src/documents/apps.py +++ b/src/documents/apps.py @@ -7,12 +7,16 @@ class DocumentsConfig(AppConfig): def ready(self): + from .signals import document_consumption_started from .signals import document_consumption_finished from .signals.handlers import ( - set_correspondent, set_tags, run_external_script) + set_correspondent, set_tags, run_pre_consume_script, + run_post_consume_script) + + document_consumption_started.connect(run_pre_consume_script) document_consumption_finished.connect(set_tags) document_consumption_finished.connect(set_correspondent) - document_consumption_finished.connect(run_external_script) + document_consumption_finished.connect(run_post_consume_script) AppConfig.ready(self) diff --git a/src/documents/signals/handlers.py b/src/documents/signals/handlers.py index 3c7700170..d9ed9090f 100644 --- a/src/documents/signals/handlers.py +++ b/src/documents/signals/handlers.py @@ -57,7 +57,18 @@ def set_tags(sender, document=None, logging_group=None, **kwargs): document.tags.add(*relevant_tags) -def run_external_script(sender, document, **kwargs): +def run_pre_consume_script(sender, filename, **kwargs): + + if not settings.PRE_CONSUME_SCRIPT: + return + + Popen(( + settings.PRE_CONSUME_SCRIPT, + filename + )).wait() + + +def run_post_consume_script(sender, document, **kwargs): if not settings.POST_CONSUME_SCRIPT: return diff --git a/src/paperless/settings.py b/src/paperless/settings.py index ad6084711..faf532d52 100644 --- a/src/paperless/settings.py +++ b/src/paperless/settings.py @@ -229,6 +229,7 @@ PASSPHRASE = os.getenv("PAPERLESS_PASSPHRASE") SHARED_SECRET = os.getenv("PAPERLESS_SHARED_SECRET", "") # Trigger a script after every successful document consumption? +PRE_CONSUME_SCRIPT = os.getenv("PAPERLESS_PRE_CONSUME_SCRIPT") POST_CONSUME_SCRIPT = os.getenv("PAPERLESS_POST_CONSUME_SCRIPT") #