f"Not consuming {self.filename}: Given ASN already exists!",
)
- def run_pre_consume_script(self):
+ def run_pre_consume_script(self, task_id):
"""
If one is configured and exists, run the pre-consume script and
handle its output and/or errors
script_env = os.environ.copy()
script_env["DOCUMENT_SOURCE_PATH"] = original_file_path
script_env["DOCUMENT_WORKING_PATH"] = working_file_path
+ script_env["TASK_ID"] = task_id
try:
completed_proc = run(
exception=e,
)
- def run_post_consume_script(self, document: Document):
+ def run_post_consume_script(self, document: Document, task_id):
"""
If one is configured and exists, run the pre-consume script and
handle its output and/or errors
",".join(document.tags.all().values_list("name", flat=True)),
)
script_env["DOCUMENT_ORIGINAL_FILENAME"] = str(document.original_filename)
+ script_env["TASK_ID"] = task_id
try:
completed_proc = run(
logging_group=self.logging_group,
)
- self.run_pre_consume_script()
+ self.run_pre_consume_script(task_id=self.task_id)
def progress_callback(current_progress, max_progress): # pragma: no cover
# recalculate progress to be within 20 and 80
document_parser.cleanup()
tempdir.cleanup()
- self.run_post_consume_script(document)
+ self.run_post_consume_script(document, task_id=self.task_id)
self.log.info(f"Document {document} consumption finished")
import shutil
import stat
import tempfile
+import uuid
from unittest import mock
from unittest.mock import MagicMock
def test_no_pre_consume_script(self, m):
c = Consumer()
c.path = "path-to-file"
- c.run_pre_consume_script()
+ c.run_pre_consume_script(str(uuid.uuid4()))
m.assert_not_called()
@mock.patch("documents.consumer.run")
c = Consumer()
c.filename = "somefile.pdf"
c.path = "path-to-file"
- self.assertRaises(ConsumerError, c.run_pre_consume_script)
+ self.assertRaises(ConsumerError, c.run_pre_consume_script, str(uuid.uuid4()))
@mock.patch("documents.consumer.run")
def test_pre_consume_script(self, m):
c = Consumer()
c.original_path = "path-to-file"
c.path = "/tmp/somewhere/path-to-file"
- c.run_pre_consume_script()
+ task_id = str(uuid.uuid4())
+ c.run_pre_consume_script(task_id)
m.assert_called_once()
subset = {
"DOCUMENT_SOURCE_PATH": c.original_path,
"DOCUMENT_WORKING_PATH": c.path,
+ "TASK_ID": task_id,
}
self.assertDictEqual(environment, {**environment, **subset})
c = Consumer()
c.path = "path-to-file"
- c.run_pre_consume_script()
+ c.run_pre_consume_script(str(uuid.uuid4()))
self.assertIn(
"INFO:paperless.consumer:This message goes to stdout",
cm.output,
with override_settings(PRE_CONSUME_SCRIPT=script.name):
c = Consumer()
c.path = "path-to-file"
- self.assertRaises(ConsumerError, c.run_pre_consume_script)
+ self.assertRaises(
+ ConsumerError,
+ c.run_pre_consume_script,
+ str(uuid.uuid4()),
+ )
class PostConsumeTestCase(TestCase):
doc.tags.add(tag1)
doc.tags.add(tag2)
- Consumer().run_post_consume_script(doc)
+ Consumer().run_post_consume_script(doc, str(uuid.uuid4()))
m.assert_not_called()
doc = Document.objects.create(title="Test", mime_type="application/pdf")
c = Consumer()
c.filename = "somefile.pdf"
- self.assertRaises(ConsumerError, c.run_post_consume_script, doc)
+ self.assertRaises(
+ ConsumerError,
+ c.run_post_consume_script,
+ doc,
+ str(uuid.uuid4()),
+ )
@mock.patch("documents.consumer.run")
def test_post_consume_script_simple(self, m):
with override_settings(POST_CONSUME_SCRIPT=script.name):
doc = Document.objects.create(title="Test", mime_type="application/pdf")
- Consumer().run_post_consume_script(doc)
+ Consumer().run_post_consume_script(doc, str(uuid.uuid4()))
m.assert_called_once()
tag2 = Tag.objects.create(name="b")
doc.tags.add(tag1)
doc.tags.add(tag2)
+ task_id = str(uuid.uuid4())
- Consumer().run_post_consume_script(doc)
+ Consumer().run_post_consume_script(doc, task_id)
m.assert_called_once()
"DOCUMENT_THUMBNAIL_URL": f"/api/documents/{doc.pk}/thumb/",
"DOCUMENT_CORRESPONDENT": "my_bank",
"DOCUMENT_TAGS": "a,b",
+ "TASK_ID": task_id,
}
self.assertDictEqual(environment, {**environment, **subset})
doc = Document.objects.create(title="Test", mime_type="application/pdf")
c.path = "path-to-file"
with self.assertRaises(ConsumerError):
- c.run_post_consume_script(doc)
+ c.run_post_consume_script(doc, str(uuid.uuid4()))