From 8f18b7fd6c6a7f6c141402e9bec67d8b4f64378d Mon Sep 17 00:00:00 2001 From: Trenton Holmes Date: Fri, 8 Apr 2022 13:42:42 -0700 Subject: [PATCH] Fixes the matching of attachment files names to patterns --- src/paperless_mail/mail.py | 9 +++++++-- src/paperless_mail/tests/test_mail.py | 19 +++++++++++-------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/paperless_mail/mail.py b/src/paperless_mail/mail.py index a7e455829..6a5bd2506 100644 --- a/src/paperless_mail/mail.py +++ b/src/paperless_mail/mail.py @@ -253,7 +253,7 @@ class MailAccountHandler(LoggingMixin): return total_processed_files - def handle_message(self, message, rule): + def handle_message(self, message, rule) -> int: if not message.attachments: return 0 @@ -285,7 +285,12 @@ class MailAccountHandler(LoggingMixin): continue if rule.filter_attachment_filename: - if not fnmatch(att.filename, rule.filter_attachment_filename): + # Force the filename and pattern to the lowercase + # as this is system dependent otherwise + if not fnmatch( + att.filename.lower(), + rule.filter_attachment_filename.lower(), + ): continue title = self.get_title(message, att, rule) diff --git a/src/paperless_mail/tests/test_mail.py b/src/paperless_mail/tests/test_mail.py index 5d7e2a3b6..a1a1e2ba2 100644 --- a/src/paperless_mail/tests/test_mail.py +++ b/src/paperless_mail/tests/test_mail.py @@ -409,18 +409,21 @@ class TestMail(DirectoriesMixin, TestCase): _AttachmentDef(filename="f2.pdf"), _AttachmentDef(filename="f3.pdf"), _AttachmentDef(filename="f2.png"), + _AttachmentDef(filename="file.PDf"), + _AttachmentDef(filename="f1.Pdf"), ], ) tests = [ - ("*.pdf", ["f1.pdf", "f2.pdf", "f3.pdf"]), - ("f1.pdf", ["f1.pdf"]), + ("*.pdf", ["f1.pdf", "f1.Pdf", "f2.pdf", "f3.pdf", "file.PDf"]), + ("f1.pdf", ["f1.pdf", "f1.Pdf"]), ("f1", []), - ("*", ["f1.pdf", "f2.pdf", "f3.pdf", "f2.png"]), + ("*", ["f1.pdf", "f2.pdf", "f3.pdf", "f2.png", "f1.Pdf", "file.PDf"]), ("*.png", ["f2.png"]), ] for (pattern, matches) in tests: + matches.sort() self.async_task.reset_mock() account = MailAccount() rule = MailRule( @@ -431,11 +434,11 @@ class TestMail(DirectoriesMixin, TestCase): result = self.mail_account_handler.handle_message(message, rule) - self.assertEqual(result, len(matches)) - filenames = [ - a[1]["override_filename"] for a in self.async_task.call_args_list - ] - self.assertCountEqual(filenames, matches) + self.assertEqual(result, len(matches), f"Error with pattern: {pattern}") + filenames = sorted( + [a[1]["override_filename"] for a in self.async_task.call_args_list], + ) + self.assertListEqual(filenames, matches) def test_handle_mail_account_mark_read(self):