]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Fixes the matching of attachment files names to patterns 680/head
authorTrenton Holmes <holmes.trenton@gmail.com>
Fri, 8 Apr 2022 20:42:42 +0000 (13:42 -0700)
committerTrenton Holmes <holmes.trenton@gmail.com>
Fri, 8 Apr 2022 20:42:42 +0000 (13:42 -0700)
src/paperless_mail/mail.py
src/paperless_mail/tests/test_mail.py

index a7e4558297f3f1ef9c9a385f325f690c8ada8751..6a5bd2506becdad0079c41b2dad0fd82cd186ce8 100644 (file)
@@ -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)
index 5d7e2a3b6cecf57a05ffd98fc18bcaec2b049726..a1a1e2ba222f3f2ba83d89604c51016169c3c2cf 100644 (file)
@@ -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):