diff options
| author | hmeland | 1999-06-13 06:32:38 +0000 |
|---|---|---|
| committer | hmeland | 1999-06-13 06:32:38 +0000 |
| commit | 6b17e19b8efa1f334f8b5699b8c2715c6489baec (patch) | |
| tree | 97b28ba1584161dc16a718cd9c9c6955f8fe4985 | |
| parent | e69c13156e7d433c5f10fb82eb1fb4717313e417 (diff) | |
| download | mailman-6b17e19b8efa1f334f8b5699b8c2715c6489baec.tar.gz mailman-6b17e19b8efa1f334f8b5699b8c2715c6489baec.tar.zst mailman-6b17e19b8efa1f334f8b5699b8c2715c6489baec.zip | |
Use new MailList.ApprovedAddMembers() to speed up addition.
| -rwxr-xr-x | bin/add_members | 46 |
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: |
