]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Ignore tagged emails from gmail to avoid duplicated documents.
authorStefan <stefan@sisao.de>
Thu, 18 Aug 2022 12:09:06 +0000 (14:09 +0200)
committerTrenton Holmes <holmes.trenton@gmail.com>
Sat, 20 Aug 2022 20:15:38 +0000 (13:15 -0700)
src/paperless_mail/mail.py

index 3896a9348e234d407f8659a104e83793cec08b00..850664ee718fb5d5684797b8979bb5d30703f069 100644 (file)
@@ -20,6 +20,7 @@ from imap_tools import MailboxFolderSelectError
 from imap_tools import MailBoxUnencrypted
 from imap_tools import MailMessage
 from imap_tools import MailMessageFlags
+from imap_tools import NOT
 from imap_tools.mailbox import MailBoxTls
 from paperless_mail.models import MailAccount
 from paperless_mail.models import MailRule
@@ -68,7 +69,7 @@ class TagMailAction(BaseMailAction):
         self.keyword = parameter
 
     def get_criteria(self):
-        return {"no_keyword": self.keyword}
+        return {"no_keyword": self.keyword, "gmail_label": self.keyword}
 
     def post_consume(self, M: MailBox, message_uids, parameter):
         if re.search(r"gmail\.com$|googlemail\.com$", M._host):
@@ -274,6 +275,11 @@ class MailAccountHandler(LoggingMixin):
             ) from err
 
         criterias = make_criterias(rule)
+        criterias_imap = AND(**criterias)
+        if "gmail_label" in criterias:
+            gmail_label = criterias["gmail_label"]
+            del criterias["gmail_label"]
+            criterias_imap = AND(NOT(gmail_label=gmail_label), **criterias)
 
         self.log(
             "debug",
@@ -282,7 +288,7 @@ class MailAccountHandler(LoggingMixin):
 
         try:
             messages = M.fetch(
-                criteria=AND(**criterias),
+                criteria=criterias_imap,
                 mark_seen=False,
                 charset=rule.account.character_set,
             )