diff options
| author | bwarsaw | 2001-07-19 03:34:36 +0000 |
|---|---|---|
| committer | bwarsaw | 2001-07-19 03:34:36 +0000 |
| commit | 4b2c4435184edef59082b3c95e3516ada4df2c61 (patch) | |
| tree | 609877f1724ec8c3639c3c9a76f5d011d9a0b681 /Mailman/Handlers | |
| parent | 900dee75103624544dcd01779018a2f06ad5d95c (diff) | |
| download | mailman-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.py | 61 | ||||
| -rw-r--r-- | Mailman/Handlers/Hold.py | 2 | ||||
| -rw-r--r-- | Mailman/Handlers/ToDigest.py | 12 |
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 |
