summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhmeland1999-06-13 06:32:38 +0000
committerhmeland1999-06-13 06:32:38 +0000
commit6b17e19b8efa1f334f8b5699b8c2715c6489baec (patch)
tree97b28ba1584161dc16a718cd9c9c6955f8fe4985
parente69c13156e7d433c5f10fb82eb1fb4717313e417 (diff)
downloadmailman-6b17e19b8efa1f334f8b5699b8c2715c6489baec.tar.gz
mailman-6b17e19b8efa1f334f8b5699b8c2715c6489baec.tar.zst
mailman-6b17e19b8efa1f334f8b5699b8c2715c6489baec.zip
Use new MailList.ApprovedAddMembers() to speed up addition.
-rwxr-xr-xbin/add_members46
1 files changed, 21 insertions, 25 deletions
diff --git a/bin/add_members b/bin/add_members
index 1e3c7455b..ef1007bc8 100755
--- a/bin/add_members
+++ b/bin/add_members
@@ -93,12 +93,6 @@ def ReadFile(filename):
return lines
-def GetRandomPassword():
- seed1 = Mailman.Utils.GetRandomSeed()
- seed2 = Mailman.Utils.GetRandomSeed()
- return "%s%s" % (seed1, seed2)
-
-
def SendExplanation(ml, users):
msg = Mailman.Message.OutgoingMessage()
msg.SetSender(ml.GetAdminEmail())
@@ -116,20 +110,6 @@ def SendExplanation(ml, users):
ml.DeliverToList(msg, users, None, None)
-def AddMember(ml, addr, digest_p, send_welcome_msg):
- # if the line was empty, just ignore it
- pw = GetRandomPassword()
- try:
- Mailman.Utils.ValidateEmail(addr)
- except Mailman.Errors.EmailAddressError:
- print "not a valid email address:", addr
- return
- try:
- ml.ApprovedAddMember(addr, pw, digest_p, send_welcome_msg)
- except Mailman.Errors.MMAlreadyAMember:
- print 'Already subscribed (skipping):', addr
-
-
def main():
try:
@@ -205,12 +185,28 @@ def main():
if not dmembers and not nmembers:
usage(1)
- for member in nmembers:
- AddMember(ml, member, 0, send_welcome_msg)
+ if nmembers:
+ nres = ml.ApprovedAddMembers(nmembers, None, 0, send_welcome_msg)
+ else: nres = {}
+
+ if dmembers:
+ dres = ml.ApprovedAddMembers(dmembers, None, 1, send_welcome_msg)
+ else: dres = {}
+
+ for result in (nres, dres):
+ for name in result.keys():
+ if result[name] is None:
+ pass
+ else:
+ # `name' was not subscribed, find out why. On failures,
+ # result[name] is set from sys.exc_info()[:2]
+ e, v = result[name]
+ if e is Mailman.Errors.MMAlreadyAMember:
+ print 'Already subscribed (skipping):', name
+ elif issubclass(e, Mailman.Errors.EmailAddressError):
+ if name == '': name = '( blank line )'
+ print "Not a valid email address:", name
- for member in dmembers:
- AddMember(ml, member, 1, send_welcome_msg)
- ml.Save()
if send_changes_msg:
SendExplanation(ml, nmembers + dmembers)
finally: