Merge branch 'hotfix'
This commit is contained in:
commit
1b10107bd8
3 changed files with 29 additions and 13 deletions
|
|
@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json
|
|||
from .exceptions import *
|
||||
from .utils.jinja import get_jenv, get_template, render_template
|
||||
|
||||
__version__ = '8.0.62'
|
||||
__version__ = '8.0.63'
|
||||
__title__ = "Frappe Framework"
|
||||
|
||||
local = Local()
|
||||
|
|
|
|||
|
|
@ -456,10 +456,22 @@ def prepare_message(email, recipient, recipients_list):
|
|||
|
||||
def clear_outbox():
|
||||
"""Remove low priority older than 31 days in Outbox and expire mails not sent for 7 days.
|
||||
|
||||
Called daily via scheduler."""
|
||||
frappe.db.sql("""delete q, r from `tabEmail Queue` as q, `tabEmail Queue Recipient` as r where q.name = r.parent and q.priority=0 and
|
||||
datediff(now(), q.modified) > 31""")
|
||||
|
||||
frappe.db.sql("""update `tabEmail Queue` as q, `tabEmail Queue Recipient` as r set q.status='Expired', r.status='Expired'
|
||||
where q.name = r.parent and datediff(curdate(), q.modified) > 7 and q.status='Not Sent' and r.status='Not Sent'""")
|
||||
Called daily via scheduler.
|
||||
Note: Used separate query to avoid deadlock
|
||||
"""
|
||||
|
||||
email_queues = frappe.db.sql_list("""select name from `tabEmail Queue`
|
||||
where priority=0 and datediff(now(), modified) > 31""")
|
||||
|
||||
if email_queues:
|
||||
frappe.db.sql("""delete from `tabEmail Queue` where name in (%s)"""
|
||||
% ','.join(['%s']*len(email_queues)), tuple(email_queues))
|
||||
|
||||
frappe.db.sql("""delete from `tabEmail Queue Recipient` where parent in (%s)"""
|
||||
% ','.join(['%s']*len(email_queues)), tuple(email_queues))
|
||||
|
||||
for dt in ("Email Queue", "Email Queue Recipient"):
|
||||
frappe.db.sql("""
|
||||
update `tab{0}`
|
||||
set status='Expired'
|
||||
where datediff(curdate(), modified) > 7 and status='Not Sent'""".format(dt))
|
||||
|
|
@ -174,7 +174,9 @@ class EmailServer:
|
|||
email_list = []
|
||||
self.check_imap_uidvalidity()
|
||||
|
||||
self.imap.select("Inbox", readonly=True)
|
||||
readonly = False if self.settings.email_sync_rule == "UNSEEN" else True
|
||||
|
||||
self.imap.select("Inbox", readonly=readonly)
|
||||
response, message = self.imap.uid('search', None, self.settings.email_sync_rule)
|
||||
if message[0]:
|
||||
email_list = message[0].split()
|
||||
|
|
@ -261,14 +263,16 @@ class EmailServer:
|
|||
if not cint(self.settings.use_imap):
|
||||
self.pop.dele(msg_num)
|
||||
else:
|
||||
# mark as seen
|
||||
self.imap.uid('STORE', message_meta, '+FLAGS', '(\\SEEN)')
|
||||
# mark as seen if email sync rule is UNSEEN (syncing only unseen mails)
|
||||
if self.settings.email_sync_rule == "UNSEEN":
|
||||
self.imap.uid('STORE', message_meta, '+FLAGS', '(\\SEEN)')
|
||||
else:
|
||||
if not cint(self.settings.use_imap):
|
||||
self.pop.dele(msg_num)
|
||||
else:
|
||||
# mark as seen
|
||||
self.imap.uid('STORE', message_meta, '+FLAGS', '(\\SEEN)')
|
||||
# mark as seen if email sync rule is UNSEEN (syncing only unseen mails)
|
||||
if self.settings.email_sync_rule == "UNSEEN":
|
||||
self.imap.uid('STORE', message_meta, '+FLAGS', '(\\SEEN)')
|
||||
|
||||
def get_email_seen_status(self, uid, flag_string):
|
||||
""" parse the email FLAGS response """
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue