summaryrefslogtreecommitdiff
path: root/Mailman/MailList.py
diff options
context:
space:
mode:
authorcotton1998-11-21 20:06:47 +0000
committercotton1998-11-21 20:06:47 +0000
commitc39c4f7270a57bcaddbd1b22d8dac2863f0d0af2 (patch)
treeafdf47f6c9c0db900eaa8f3207dfd4a0aeea18a5 /Mailman/MailList.py
parentc56a6d08e21e818f45343328d86dcf66188acd12 (diff)
downloadmailman-c39c4f7270a57bcaddbd1b22d8dac2863f0d0af2.tar.gz
mailman-c39c4f7270a57bcaddbd1b22d8dac2863f0d0af2.tar.zst
mailman-c39c4f7270a57bcaddbd1b22d8dac2863f0d0af2.zip
Diffstat (limited to 'Mailman/MailList.py')
-rw-r--r--Mailman/MailList.py59
1 files changed, 48 insertions, 11 deletions
diff --git a/Mailman/MailList.py b/Mailman/MailList.py
index 7917e8356..9b526b18a 100644
--- a/Mailman/MailList.py
+++ b/Mailman/MailList.py
@@ -68,13 +68,50 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin,
pass
def GetMembers(self):
- """returns a list of the members."""
+ """returns a list of the members. (all lowercase)"""
return self.members.keys()
-
+
def GetDigestMembers(self):
- """returns a list of digest members."""
+ """returns a list of digest members. (all lowercase)"""
return self.digest_members.keys()
+ def GetDeliveryMembers(self):
+ """returns a list of the members with username case preserved."""
+ res = []
+ for k,v in self.members.items():
+ if type(v) is type(""):
+ res.append(v)
+ else:
+ res.append(k)
+ return res
+
+ def GetDigestDeliveryMembers(self):
+ """returns a list of the members with username case preserved."""
+ res = []
+ for k,v in self.digest_members.items():
+ if type(v) is type(""):
+ res.append(v)
+ else:
+ res.append(k)
+ return res
+
+ def __AddMember(self, addr, digest):
+ """adds the appropriate data to the internal members dict.
+
+ If the username has upercase letters in it, then the value
+ in the members dict is the case preserved address, otherwise,
+ the value is 0."""
+ if Utils.LCDomain(addr) == string.lower(addr):
+ if digest:
+ self.digest_members[addr] = 0
+ else:
+ self.members[addr] = 0
+ else:
+ if digest:
+ self.digest_members[string.lower(addr)] = addr
+ else:
+ self.members[string.lower(addr)] = addr
+
def GetAdminEmail(self):
return '%s-admin@%s' % (self._internal_name, self.host_name)
@@ -793,11 +830,10 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin,
name = Utils.LCDomain(name)
if self.IsMember(name):
raise Errors.MMAlreadyAMember
+ self.__AddMember(name, digest)
if digest:
- self.digest_members[name] = 1
kind = " (D)"
else:
- self.members[name] = 1
kind = ""
self.SetUserOption(name, mm_cfg.DisableMime,
1 - self.mime_is_default_digest)
@@ -1089,10 +1125,10 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin,
if self.GetUserOption(sender, mm_cfg.AcknowlegePosts):
ack_post = 1
# Deliver the mail.
- recipients = self.GetMembers()
+ members = self.GetDeliveryMembers()
if dont_send_to_sender:
try:
- recipients.remove(sender)
+ recipients.remove(members)
#
# sender not in list (case sensitive username problem?)
#
@@ -1100,10 +1136,11 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin,
self.LogMsg("error",
"couldn't remove %s from recipient list: %s",
sender,
- str(recipients))
- def DeliveryEnabled(x, s=self, v=mm_cfg.DisableDelivery):
- return not s.GetUserOption(x, v)
- recipients = filter(DeliveryEnabled, recipients)
+ str(members))
+ recipients = []
+ for m in members:
+ if not self.GetUserOption(m, mm_cfg.DisableDelivery):
+ recipients.append(m)
self.LogMsg("post", "post to %s from %s size=%d",
self._internal_name, msg.GetSender(), len(msg.body))