]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Fix: skip accounts without enabled rules
authorshamoon <4887959+shamoon@users.noreply.github.com>
Sat, 5 Oct 2024 06:59:31 +0000 (23:59 -0700)
committershamoon <4887959+shamoon@users.noreply.github.com>
Sat, 5 Oct 2024 06:59:31 +0000 (23:59 -0700)
src/paperless_mail/tasks.py
src/paperless_mail/tests/test_mail.py

index ab013a41e85d730c4ce4acc7a73ffe1a5885ef28..67bd620cf53bb09cb8ed7ff00cc6c6914ec94f83 100644 (file)
@@ -5,6 +5,7 @@ from celery import shared_task
 from paperless_mail.mail import MailAccountHandler
 from paperless_mail.mail import MailError
 from paperless_mail.models import MailAccount
+from paperless_mail.models import MailRule
 
 logger = logging.getLogger("paperless.mail.tasks")
 
@@ -13,6 +14,9 @@ logger = logging.getLogger("paperless.mail.tasks")
 def process_mail_accounts():
     total_new_documents = 0
     for account in MailAccount.objects.all():
+        if not MailRule.objects.filter(account=account, enabled=True).exists():
+            logger.info(f"No rules enabled for account {account}. Skipping.")
+            continue
         try:
             total_new_documents += MailAccountHandler().handle_mail_account(account)
         except MailError:
index b1e3ff06e78ea506ae756f6c168b863ec4811c44..c8a8e51249d1e0667f5b9a8c80d5c869b243055d 100644 (file)
@@ -1543,6 +1543,14 @@ class TestTasks(TestCase):
             username="A",
             password="A",
         )
+        MailRule.objects.create(
+            name="A",
+            account=MailAccount.objects.get(name="A"),
+        )
+        MailRule.objects.create(
+            name="B",
+            account=MailAccount.objects.get(name="B"),
+        )
 
         result = tasks.process_mail_accounts()
 
@@ -1552,3 +1560,33 @@ class TestTasks(TestCase):
         m.side_effect = lambda account: 0
         result = tasks.process_mail_accounts()
         self.assertIn("No new", result)
+
+    @mock.patch("paperless_mail.tasks.MailAccountHandler.handle_mail_account")
+    def test_accounts_no_enabled_rules(self, m):
+        m.side_effect = lambda account: 6
+
+        MailAccount.objects.create(
+            name="A",
+            imap_server="A",
+            username="A",
+            password="A",
+        )
+        MailAccount.objects.create(
+            name="B",
+            imap_server="A",
+            username="A",
+            password="A",
+        )
+        MailRule.objects.create(
+            name="A",
+            account=MailAccount.objects.get(name="A"),
+            enabled=False,
+        )
+        MailRule.objects.create(
+            name="B",
+            account=MailAccount.objects.get(name="B"),
+            enabled=False,
+        )
+
+        tasks.process_mail_accounts()
+        self.assertEqual(m.call_count, 0)