ソースを参照

Merge branch 'master' into develop

version-14
Nabin Hait 8年前
コミット
273c94fe4b
3個のファイルの変更29行の追加13行の削除
  1. +1
    -1
      frappe/__init__.py
  2. +19
    -7
      frappe/email/queue.py
  3. +9
    -5
      frappe/email/receive.py

+ 1
- 1
frappe/__init__.py ファイルの表示

@@ -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()


+ 19
- 7
frappe/email/queue.py ファイルの表示

@@ -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))

+ 9
- 5
frappe/email/receive.py ファイルの表示

@@ -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 """


読み込み中…
キャンセル
保存