diff options
| author | Barry Warsaw | 2009-02-22 21:33:17 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2009-02-22 21:33:17 -0500 |
| commit | 2d2d5393acc7db23baf4f3d43a0712bfa795c03e (patch) | |
| tree | f7a41025dde055777aa1b4dd900fad4fc96c3943 /src/mailman/queue/digest.py | |
| parent | 8644b80168066c8fd11a7e2440ed8566453f0cd4 (diff) | |
| download | mailman-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.py | 18 |
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() |
