summaryrefslogtreecommitdiff
path: root/src/mailman/queue/digest.py
diff options
context:
space:
mode:
authorBarry Warsaw2009-02-22 21:33:17 -0500
committerBarry Warsaw2009-02-22 21:33:17 -0500
commit2d2d5393acc7db23baf4f3d43a0712bfa795c03e (patch)
treef7a41025dde055777aa1b4dd900fad4fc96c3943 /src/mailman/queue/digest.py
parent8644b80168066c8fd11a7e2440ed8566453f0cd4 (diff)
downloadmailman-2d2d5393acc7db23baf4f3d43a0712bfa795c03e.tar.gz
mailman-2d2d5393acc7db23baf4f3d43a0712bfa795c03e.tar.zst
mailman-2d2d5393acc7db23baf4f3d43a0712bfa795c03e.zip
Get rid of one_last_digest. Move this into a separate OneLastDigest table.
Make it explicit to get the last digest (I could imagine an user selecting not to). Actually add tests for this. Start to get rid of 'from storm.locals import *' in favor of more specific imports. Start to use Store.of() instead of config.db.store where we can. Rework (delivery)MemberRosters to use the Member attributes. This ensures that the layered lookup happens at the expense of query optimization. Sundry and various cleanups.
Diffstat (limited to 'src/mailman/queue/digest.py')
-rw-r--r--src/mailman/queue/digest.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/mailman/queue/digest.py b/src/mailman/queue/digest.py
index a590a9997..30705b8be 100644
--- a/src/mailman/queue/digest.py
+++ b/src/mailman/queue/digest.py
@@ -43,6 +43,7 @@ from mailman.Utils import maketext, oneline, wrap
from mailman.config import config
from mailman.core.errors import DiscardMessage
from mailman.i18n import _
+from mailman.interfaces.member import DeliveryMode, DeliveryStatus
from mailman.pipeline.decorate import decorate
from mailman.pipeline.scrubber import process as scrubber
from mailman.queue import Runner
@@ -332,10 +333,6 @@ class DigestRunner(Runner):
# digest to ensure that there will be no gaps in the messages they
# receive.
digest_members = set(mlist.digest_members.members)
- for address in mlist.one_last_digest:
- member = mlist.digest_members.get_member(address)
- if member:
- digest_members.add(member)
for member in digest_members:
if member.delivery_status <> DeliveryStatus.enabled:
continue
@@ -350,6 +347,16 @@ class DigestRunner(Runner):
raise AssertionError(
'Digest member "{0}" unexpected delivery mode: {1}'.format(
email_address, member.delivery_mode))
+ # Add also the folks who are receiving one last digest.
+ for address, delivery_mode in mlist.last_digest_recipients:
+ if delivery_mode == DeliveryMode.plaintext_digests:
+ rfc1153_recipients.add(address.original_address)
+ elif delivery_mode == DeliveryMode.mime_digests:
+ mime_recipients.add(address.original_address)
+ else:
+ raise AssertionError(
+ 'OLD recipient "{0}" unexpected delivery mode: {1}'.format(
+ address, delivery_mode))
# Send the digests to the virgin queue for final delivery.
queue = config.switchboards['virgin']
queue.enqueue(mime,
@@ -360,6 +367,3 @@ class DigestRunner(Runner):
recips=rfc1153_recipients,
listname=mlist.fqdn_listname,
isdigest=True)
- # Now that we've delivered the last digest to folks who were waiting
- # for it, clear that recipient set.
- mlist.one_last_digest.clear()