summaryrefslogtreecommitdiff
path: root/Mailman/bin/add_members.py
diff options
context:
space:
mode:
authorBarry Warsaw2007-09-20 22:39:20 -0400
committerBarry Warsaw2007-09-20 22:39:20 -0400
commit892316be3c09eec4a1f8117bfd9eb44bba1c9117 (patch)
treec6dd4f1f116bad876306923a981237d09d05fdca /Mailman/bin/add_members.py
parent18e07a3dc2caa61ed042515cd91833a76a596b9d (diff)
downloadmailman-892316be3c09eec4a1f8117bfd9eb44bba1c9117.tar.gz
mailman-892316be3c09eec4a1f8117bfd9eb44bba1c9117.tar.zst
mailman-892316be3c09eec4a1f8117bfd9eb44bba1c9117.zip
Diffstat (limited to 'Mailman/bin/add_members.py')
-rw-r--r--Mailman/bin/add_members.py77
1 files changed, 30 insertions, 47 deletions
diff --git a/Mailman/bin/add_members.py b/Mailman/bin/add_members.py
index e27304aaf..5d1400a9a 100644
--- a/Mailman/bin/add_members.py
+++ b/Mailman/bin/add_members.py
@@ -22,7 +22,7 @@ import sys
import optparse
from cStringIO import StringIO
-from email.Utils import parseaddr
+from email.utils import parseaddr
from Mailman import Errors
from Mailman import MailList
@@ -30,7 +30,10 @@ from Mailman import Message
from Mailman import Utils
from Mailman import Version
from Mailman import i18n
+from Mailman.app.membership import add_member
from Mailman.configuration import config
+from Mailman.constants import DeliveryMode
+from Mailman.initialize import initialize
_ = i18n._
__i18n_templates__ = True
@@ -69,13 +72,9 @@ success/failure of these subscriptions, overriding whatever the list's
help=_('Alternative configuration file to use'))
opts, args = parser.parse_args()
if not args:
- parser.print_help()
- print >> sys.stderr, _('Missing listname')
- sys.exit(1)
+ parser.error(_('Missing listname'))
if len(args) > 1:
- parser.print_help()
- print >> sys.stderr, _('Unexpected arguments')
- sys.exit(1)
+ parser.error(_('Unexpected arguments'))
if opts.welcome_msg is not None:
ch = opts.welcome_msg[0].lower()
if ch == 'y':
@@ -83,9 +82,7 @@ success/failure of these subscriptions, overriding whatever the list's
elif ch == 'n':
opts.welcome_msg = False
else:
- parser.print_help()
- print >> sys.stderr, _('Illegal value for -w: $opts.welcome_msg')
- sys.exit(1)
+ parser.error(_('Illegal value for -w: $opts.welcome_msg'))
if opts.admin_notify is not None:
ch = opts.admin_notify[0].lower()
if ch == 'y':
@@ -93,17 +90,11 @@ success/failure of these subscriptions, overriding whatever the list's
elif ch == 'n':
opts.admin_notify = False
else:
- parser.print_help()
- print >> sys.stderr, _('Illegal value for -a: $opts.admin_notify')
- sys.exit(1)
+ parser.error(_('Illegal value for -a: $opts.admin_notify'))
if opts.regular is None and opts.digest is None:
- parser.print_help()
- print >> sys.stderr, _('At least one of -r or -d is required')
- sys.exit(1)
+ parser.error(_('At least one of -r or -d is required'))
if opts.regular == '-' and opts.digest == '-':
- parser.print_help()
- print >> sys.stderr, _("-r and -d cannot both be '-'")
- sys.exit(1)
+ parser.error(_("-r and -d cannot both be '-'"))
return parser, opts, args
@@ -131,45 +122,37 @@ class Tee:
self._outfp.write(msg)
-class UserDesc:
- pass
-
-
-def addall(mlist, members, digest, ack, outfp):
+def addall(mlist, subscribers, delivery_mode, ack, admin_notify, outfp):
tee = Tee(outfp)
- for member in members:
- userdesc = UserDesc()
- userdesc.fullname, userdesc.address = parseaddr(member)
- userdesc.digest = digest
-
+ for subscriber in subscribers:
try:
- mlist.ApprovedAddMember(userdesc, ack, 0)
- except Errors.MMAlreadyAMember:
- print >> tee, _('Already a member: $member')
+ fullname, address = parseaddr(subscriber)
+ password = Utils.MakeRandomPassword()
+ add_member(mlist, address, fullname, password, delivery_mode,
+ config.DEFAULT_SERVER_LANGUAGE, ack, admin_notify)
+ except AlreadySubscribedError:
+ print >> tee, _('Already a member: $subscriber')
except Errors.InvalidEmailAddress:
if userdesc.address == '':
print >> tee, _('Bad/Invalid email address: blank line')
else:
print >> tee, _('Bad/Invalid email address: $member')
else:
- print >> tee, _('Subscribed: $member')
+ print >> tee, _('Subscribing: $subscriber')
def main():
parser, opts, args = parseargs()
- config.load(opts.config)
+ initialize(opts.config)
listname = args[0].lower().strip()
- try:
- mlist = MailList.MailList(listname)
- except Errors.MMUnknownListError:
- parser.print_help()
- print >> sys.stderr, _('No such list: $listname')
- sys.exit(1)
+ mlist = config.db.list_manager.get(listname)
+ if mlist is None:
+ parser.error(_('No such list: $listname'))
- # Set up defaults
+ # Set up defaults.
if opts.welcome_msg is None:
send_welcome_msg = mlist.send_welcome_msg
else:
@@ -195,10 +178,14 @@ def main():
s = StringIO()
if nmembers:
- addall(mlist, nmembers, False, send_welcome_msg, s)
+ addall(mlist, nmembers, DeliveryMode.regular,
+ send_welcome_msg, admin_notify, s)
if dmembers:
- addall(mlist, dmembers, True, send_welcome_msg, s)
+ addall(mlist, dmembers, DeliveryMode.mime_digests,
+ send_welcome_msg, admin_notify, s)
+
+ config.db.flush()
if admin_notify:
subject = _('$mlist.real_name subscription notification')
@@ -207,10 +194,6 @@ def main():
mlist.preferred_language)
msg.send(mlist)
- mlist.Save()
- finally:
- mlist.Unlock()
-
if __name__ == '__main__':