diff --git a/src/documents/apps.py b/src/documents/apps.py index 699b32865..73d87f4d2 100644 --- a/src/documents/apps.py +++ b/src/documents/apps.py @@ -8,11 +8,14 @@ class DocumentsConfig(AppConfig): def ready(self): from .signals import document_consumption_finished + from .signals import document_consumption_started from .signals.handlers import ( - set_correspondent, set_tags, run_external_script) + set_correspondent, set_tags, run_post_consume_external_script, run_pre_consume_external_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_external_script) + + document_consumption_started.connect(run_pre_consume_external_script) AppConfig.ready(self) diff --git a/src/documents/signals/handlers.py b/src/documents/signals/handlers.py index 3c7700170..f860372cb 100644 --- a/src/documents/signals/handlers.py +++ b/src/documents/signals/handlers.py @@ -57,7 +57,7 @@ def set_tags(sender, document=None, logging_group=None, **kwargs): document.tags.add(*relevant_tags) -def run_external_script(sender, document, **kwargs): +def run_post_consume_external_script(sender, document, **kwargs): if not settings.POST_CONSUME_SCRIPT: return @@ -73,3 +73,13 @@ def run_external_script(sender, document, **kwargs): str(document.correspondent), str(",".join(document.tags.all().values_list("slug", flat=True))) )).wait() + +def run_pre_consume_external_script(sender, filename, **kwargs): + + if not settings.PRE_CONSUME_SCRIPT: + return + + Popen(( + settings.PRE_CONSUME_SCRIPT, + filename +)).wait() diff --git a/src/paperless/settings.py b/src/paperless/settings.py index ad6084711..877d57504 100644 --- a/src/paperless/settings.py +++ b/src/paperless/settings.py @@ -230,6 +230,7 @@ SHARED_SECRET = os.getenv("PAPERLESS_SHARED_SECRET", "") # Trigger a script after every successful document consumption? POST_CONSUME_SCRIPT = os.getenv("PAPERLESS_POST_CONSUME_SCRIPT") +PRE_CONSUME_SCRIPT = os.getenv("PAPERLESS_PRE_CONSUME_SCRIPT") # # TODO: Remove after 0.2