From e49ed58f1a3222090bff08aef445ea142e87be9d Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Fri, 4 Oct 2024 23:59:31 -0700 Subject: [PATCH] Fix: skip accounts without enabled rules --- src/paperless_mail/tasks.py | 4 +++ src/paperless_mail/tests/test_mail.py | 38 +++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/paperless_mail/tasks.py b/src/paperless_mail/tasks.py index ab013a41e..67bd620cf 100644 --- a/src/paperless_mail/tasks.py +++ b/src/paperless_mail/tasks.py @@ -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: diff --git a/src/paperless_mail/tests/test_mail.py b/src/paperless_mail/tests/test_mail.py index b1e3ff06e..c8a8e5124 100644 --- a/src/paperless_mail/tests/test_mail.py +++ b/src/paperless_mail/tests/test_mail.py @@ -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)