Skip to content

Commit a21f957

Browse files
author
Jose Zambudio
committed
[IMP] Add option to read e-mails unseen
1 parent 984b34e commit a21f957

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

fetchmail_attach_from_folder/models/fetchmail_server_folder.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ class FetchmailServerFolder(models.Model):
9797
help="Optional custom server action to trigger for each incoming "
9898
"mail, on the record that was created or updated by this mail",
9999
)
100+
fetch_unseen_only = fields.Boolean(
101+
help="By default all undeleted emails are searched. Checking this "
102+
"field adds the unread condition.",
103+
)
100104

101105
def button_confirm_folder(self):
102106
self.write({"state": "draft"})
@@ -170,10 +174,13 @@ def check_imap_archive_folder(self, connection):
170174
% {"folder": self.archive_path, "server": server.name}
171175
)
172176

177+
def get_criteria(self):
178+
return "UNDELETED" if not self.fetch_unseen_only else "UNSEEN UNDELETED"
179+
173180
def retrieve_imap_folder(self, connection):
174181
"""Retrieve all mails for one IMAP folder."""
175182
self.ensure_one()
176-
msgids = self.get_msgids(connection, "UNDELETED")
183+
msgids = self.get_msgids(connection, self.get_criteria())
177184
for msgid in msgids[0].split():
178185
# We will accept exceptions for single messages
179186
try:

fetchmail_attach_from_folder/views/fetchmail_server.xml

+1
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
<field name="active" />
104104
<field name="archive_path" />
105105
<field name="delete_matching" />
106+
<field name="fetch_unseen_only" />
106107
<field name="msg_state" />
107108
</group>
108109
</group>

fetchmail_attach_from_folder/wizard/attach_mail_manually.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def default_get(self, fields_list):
4242
folder = folder_model.browse([folder_id])
4343
connection = folder.server_id.connect()
4444
connection.select(folder.path)
45-
criteria = "FLAGGED" if folder.flag_nonmatching else "UNDELETED"
45+
criteria = "FLAGGED" if folder.flag_nonmatching else folder.get_criteria()
4646
msgids = folder.get_msgids(connection, criteria)
4747
for msgid in msgids[0].split():
4848
mail_message, message_org = folder.fetch_msg(connection, msgid)

0 commit comments

Comments
 (0)