summaryrefslogtreecommitdiff
path: root/Mailman/Handlers
diff options
context:
space:
mode:
authorbwarsaw2001-07-19 03:34:36 +0000
committerbwarsaw2001-07-19 03:34:36 +0000
commit4b2c4435184edef59082b3c95e3516ada4df2c61 (patch)
tree609877f1724ec8c3639c3c9a76f5d011d9a0b681 /Mailman/Handlers
parent900dee75103624544dcd01779018a2f06ad5d95c (diff)
downloadmailman-4b2c4435184edef59082b3c95e3516ada4df2c61.tar.gz
mailman-4b2c4435184edef59082b3c95e3516ada4df2c61.tar.zst
mailman-4b2c4435184edef59082b3c95e3516ada4df2c61.zip
All membership related attribute access should use the MemberAdaptor
API instead, e.g. GetUserOption() -> getMemberOption() GetPreferredLanguage() -> getMemberLanguage() IsMember() -> isMember() GetDigestDeliveryMembers() -> getDigestMemberKeys() ToDigest.py: clear the one_last_digest() dictionary after sending the digest.
Diffstat (limited to 'Mailman/Handlers')
-rw-r--r--Mailman/Handlers/Acknowledge.py61
-rw-r--r--Mailman/Handlers/Hold.py2
-rw-r--r--Mailman/Handlers/ToDigest.py12
3 files changed, 44 insertions, 31 deletions
diff --git a/Mailman/Handlers/Acknowledge.py b/Mailman/Handlers/Acknowledge.py
index be6919fba..c76f36fa4 100644
--- a/Mailman/Handlers/Acknowledge.py
+++ b/Mailman/Handlers/Acknowledge.py
@@ -25,6 +25,7 @@ to send acks only after successful delivery.
from Mailman import mm_cfg
from Mailman import Utils
from Mailman import Message
+from Mailman import Errors
from Mailman.i18n import _
@@ -32,31 +33,35 @@ from Mailman.i18n import _
def process(mlist, msg, msgdata):
# Extract the sender's address and find them in the user database
sender = msgdata.get('original_sender', msg.get_sender())
- sender = mlist.FindUser(sender)
- if sender and mlist.GetUserOption(sender, mm_cfg.AcknowledgePosts):
- # Okay, they want acknowledgement of their post
- subject = msg['subject']
- # Trim off the subject prefix
- if subject:
- prefix = mlist.subject_prefix
- if subject.startswith(prefix):
- subject = subject[len(prefix):]
- # Get the user's preferred language
- lang = msgdata.get('lang', mlist.GetPreferredLanguage(sender))
- # Now get the acknowledgement template
- realname = mlist.real_name
- text = Utils.maketext(
- 'postack.txt',
- {'subject' : subject,
- 'listname' : realname,
- 'listinfo_url': mlist.GetScriptURL('listinfo', absolute=1),
- }, lang=lang, mlist=mlist)
- # Craft the outgoing message, with all headers and attributes
- # necessary for general delivery. Then enqueue it to the outgoing
- # queue.
- subject = _('%(realname)s post acknowledgement')
- usermsg = Message.UserNotification(sender, mlist.GetAdminEmail(),
- subject, text)
- usermsg.addheader('Content-Type', 'text/plain',
- charset=Utils.GetCharSet(lang))
- usermsg.send(mlist)
+ try:
+ ack = mlist.getMemberOption(sender, mm_cfg.AcknowledgePosts)
+ if not ack:
+ return
+ except Errors.NotAMember:
+ return
+ # Okay, they want acknowledgement of their post
+ subject = msg['subject']
+ # Trim off the subject prefix
+ if subject:
+ prefix = mlist.subject_prefix
+ if subject.startswith(prefix):
+ subject = subject[len(prefix):]
+ # Get the user's preferred language
+ lang = msgdata.get('lang', mlist.getMemberLanguage(sender))
+ # Now get the acknowledgement template
+ realname = mlist.real_name
+ text = Utils.maketext(
+ 'postack.txt',
+ {'subject' : subject,
+ 'listname' : realname,
+ 'listinfo_url': mlist.GetScriptURL('listinfo', absolute=1),
+ }, lang=lang, mlist=mlist)
+ # Craft the outgoing message, with all headers and attributes
+ # necessary for general delivery. Then enqueue it to the outgoing
+ # queue.
+ subject = _('%(realname)s post acknowledgement')
+ usermsg = Message.UserNotification(sender, mlist.GetAdminEmail(),
+ subject, text)
+ usermsg.addheader('Content-Type', 'text/plain',
+ charset=Utils.GetCharSet(lang))
+ usermsg.send(mlist)
diff --git a/Mailman/Handlers/Hold.py b/Mailman/Handlers/Hold.py
index 70dda67a7..28c2810b3 100644
--- a/Mailman/Handlers/Hold.py
+++ b/Mailman/Handlers/Hold.py
@@ -150,7 +150,7 @@ def process(mlist, msg, msgdata):
# are allowed to post without approval.
if mlist.member_posting_only:
posters = Utils.List2Dict([s.lower() for s in mlist.posters])
- if not mlist.IsMember(sender) and \
+ if not mlist.isMember(sender) and \
not Utils.FindMatchingAddresses(sender, posters):
# the sender is neither a member of the list, nor in the list of
# explicitly approved posters
diff --git a/Mailman/Handlers/ToDigest.py b/Mailman/Handlers/ToDigest.py
index b2a45355e..569ce1f1d 100644
--- a/Mailman/Handlers/ToDigest.py
+++ b/Mailman/Handlers/ToDigest.py
@@ -327,11 +327,19 @@ def send_i18n_digests(mlist, mboxfp):
# Calculate the recipients lists
plainrecips = []
mimerecips = []
- for user in mlist.GetDigestDeliveryMembers():
- if mlist.GetUserOption(user, mm_cfg.DisableMime):
+ drecips = mlist.getDigestMemberKeys() + self.one_last_digest.keys()
+ for user in mlist.getMemberCPAddresses(drecips):
+ if user is None:
+ # It means that someone who toggled off digest delivery
+ # subsequently unsubscribed from the mailing list. Just ignore
+ # them.
+ continue
+ if mlist.getMemberOption(user, mm_cfg.DisableMime):
plainrecips.append(user)
else:
mimerecips.append(user)
+ # Zap this since we're now delivering the last digest to these folks.
+ self.one_last_digest.clear()
# MIME
virginq.enqueue(mimemsg, recips=mimerecips, listname=mlist.internal_name())
# rfc1153