]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Use the attachment filename so downstream template matching works against it (#4931)
authorTrenton H <797416+stumpylog@users.noreply.github.com>
Mon, 11 Dec 2023 17:08:42 +0000 (09:08 -0800)
committerGitHub <noreply@github.com>
Mon, 11 Dec 2023 17:08:42 +0000 (09:08 -0800)
src/paperless_mail/mail.py
src/paperless_mail/tests/test_mail.py

index 0b6ec316f257394e5a5ec74d5b20dfb9f0474453..906aafa15d63ab4e333b786ec6118d502cb18595 100644 (file)
@@ -8,6 +8,7 @@ import traceback
 from datetime import date
 from datetime import timedelta
 from fnmatch import fnmatch
+from pathlib import Path
 from typing import Optional
 from typing import Union
 
@@ -703,12 +704,15 @@ class MailAccountHandler(LoggingMixin):
 
             if is_mime_type_supported(mime_type):
                 os.makedirs(settings.SCRATCH_DIR, exist_ok=True)
-                _, temp_filename = tempfile.mkstemp(
-                    prefix="paperless-mail-",
-                    dir=settings.SCRATCH_DIR,
+
+                temp_dir = Path(
+                    tempfile.mkdtemp(
+                        prefix="paperless-mail-",
+                        dir=settings.SCRATCH_DIR,
+                    ),
                 )
-                with open(temp_filename, "wb") as f:
-                    f.write(att.payload)
+                temp_filename = temp_dir / pathvalidate.sanitize_filename(att.filename)
+                temp_filename.write_bytes(att.payload)
 
                 self.log.info(
                     f"Rule {rule}: "
index 55983939a625725afce07ed928ad4aa821bf116a..8488ac65dc00aad25babe6823dbf7eb6376a14ca 100644 (file)
@@ -1271,7 +1271,10 @@ class TestMail(
         self.assertEqual(len(self.bogus_mailbox.fetch("UNSEEN", False)), 0)
         self.assertEqual(len(self.bogus_mailbox.messages), 3)
 
-    def assert_queue_consumption_tasks_call_args(self, expected_call_args: list):
+    def assert_queue_consumption_tasks_call_args(
+        self,
+        expected_call_args: list[list[dict[str, str]]],
+    ):
         """
         Verifies that queue_consumption_tasks has been called with the expected arguments.
 
@@ -1283,7 +1286,7 @@ class TestMail(
 
         """
 
-        # assert number of calls to queue_consumption_tasks mathc
+        # assert number of calls to queue_consumption_tasks match
         self.assertEqual(
             len(self._queue_consumption_tasks_mock.call_args_list),
             len(expected_call_args),