diff options
author | bwarsaw <> | 2004-12-30 23:41:09 +0000 |
---|---|---|
committer | bwarsaw <> | 2004-12-30 23:41:09 +0000 |
commit | e6402e44036af0529a35ff6e81cfc3108c1a96e1 (patch) | |
tree | 2c71c44668e13aa8155b7aed8f5b25c16af74616 | |
parent | 43ccbb2caa517b891b99f307ab3e5cb66bc94555 (diff) | |
download | mailman2-e6402e44036af0529a35ff6e81cfc3108c1a96e1.tar.gz mailman2-e6402e44036af0529a35ff6e81cfc3108c1a96e1.tar.xz mailman2-e6402e44036af0529a35ff6e81cfc3108c1a96e1.zip |
Renamed reset_pw to reset_pw.py so that the file looks like a Python module.
This goes hand-in-hand with one of two changes to withlist. Now, withlist
puts the directory it's found in on the end of sys.path. This way it's much
easier to run withlist scripts that live in bin.
The other change allows running withlist w/o a list name, but only if -i is
given. Makes it easier to debug various non-list related parts of Mailman.
-rw-r--r-- | bin/Makefile.in | 2 | ||||
-rw-r--r-- | bin/reset_pw.py (renamed from bin/reset_pw) | 8 | ||||
-rw-r--r-- | bin/withlist | 70 | ||||
-rwxr-xr-x | configure | 4 | ||||
-rw-r--r-- | configure.in | 6 |
5 files changed, 58 insertions, 32 deletions
diff --git a/bin/Makefile.in b/bin/Makefile.in index daf4faff..518b6088 100644 --- a/bin/Makefile.in +++ b/bin/Makefile.in @@ -49,7 +49,7 @@ SCRIPTS= mmsitepass newlist rmlist add_members \ list_admins genaliases change_pw mailmanctl qrunner inject \ unshunt fix_url.py convert.py transcheck b4b5-archfix \ list_owners msgfmt.py show_qfiles discard rb-archfix \ - reset_pw + reset_pw.py BUILDDIR= ../build/bin diff --git a/bin/reset_pw b/bin/reset_pw.py index d7e5527a..bddc1ace 100644 --- a/bin/reset_pw +++ b/bin/reset_pw.py @@ -26,7 +26,7 @@ responsibility to let the users know that their passwords have been changed. This script is intended to be run as a bin/withlist script, i.e. -% bin/withlist -l -r reset_pw [options] +% bin/withlist -l -r reset_pw listname [options] Options: -v / --verbose @@ -72,13 +72,17 @@ def reset_pw(mlist, *args): if opt in ('-v', '--verbose'): verbose = True - listname = mlist.listname() + listname = mlist.internal_name() if verbose: print _('Changing passwords for list: %(listname)s') for member in mlist.getMembers(): randompw = Utils.MakeRandomPassword() mlist.setMemberPassword(member, randompw) + if verbose: + print _('New password for member %(member)40s: %(randompw)s') + + mlist.Save() diff --git a/bin/withlist b/bin/withlist index 345ff39d..02ce3e50 100644 --- a/bin/withlist +++ b/bin/withlist @@ -1,6 +1,6 @@ #! @PYTHON@ # -# Copyright (C) 1998-2003 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2004 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -49,12 +49,12 @@ Options: --run [module.]callable -r [module.]callable This can be used to run a script with the opened MailList object. - This works by attempting to import `module' (which must already be - accessible on your sys.path), and then calling `callable' from the - module. callable can be a class or function; it is called with the - MailList object as the first argument. If additional args are given - on the command line, they are passed as subsequent positional args to - the callable. + This works by attempting to import `module' (which must be in the + directory containing withlist, or already be accessible on your + sys.path), and then calling `callable' from the module. callable can + be a class or function; it is called with the MailList object as the + first argument. If additional args are given on the command line, + they are passed as subsequent positional args to the callable. Note that `module.' is optional; if it is omitted then a module with the name `callable' will be imported. @@ -115,24 +115,36 @@ def changepw(mlist, addr, newpasswd): print 'No address matched:', addr and run this from the command line: -%% bin/withlist -l -r changepw mylist somebody@somewhere.org foobar + %% bin/withlist -l -r changepw mylist somebody@somewhere.org foobar """ +import os import sys -import getopt import code +import getopt import paths -from Mailman import Utils -from Mailman import MailList from Mailman import Errors +from Mailman import MailList +from Mailman import Utils from Mailman.i18n import _ +try: + True, False +except NameError: + True = 1 + False = 0 + + # `m' will be the MailList object and `r' will be the results of the callable m = None r = None -VERBOSE = 1 -LOCK = 0 +VERBOSE = True +LOCK = False + + +# Put the bin directory on sys.path -- last +sys.path.append(os.path.dirname(sys.argv[0])) @@ -204,23 +216,30 @@ def main(): run = None interact = None - all = 0 + all = False + dolist = True for opt, arg in opts: if opt in ('-h', '--help'): usage(0) elif opt in ('-l', '--lock'): - LOCK = 1 + LOCK = True elif opt in ('-r', '--run'): run = arg elif opt in ('-q', '--quiet'): - VERBOSE = 0 + VERBOSE = False elif opt in ('-i', '--interactive'): - interact = 1 + interact = True elif opt in ('-a', '--all'): - all = 1 + all = True if len(args) < 1 and not all: - usage(1, _('No list name supplied.')) + warning = _('No list name supplied.') + if interact: + # Let them keep going + print warning + dolist = False + else: + usage(1, warning) if all and not run: usage(1, _('--all requires --run')) @@ -228,9 +247,9 @@ def main(): # The default for interact is 1 unless -r was given if interact is None: if run is None: - interact = 1 + interact = True else: - interact = 0 + interact = False # try to import the module for the callable func = None @@ -251,7 +270,7 @@ def main(): if all: r = [do_list(listname, args, func) for listname in Utils.list_names()] - else: + elif dolist: listname = args.pop(0).lower().strip() r = do_list(listname, args, func) @@ -266,8 +285,11 @@ def main(): pass namespace = globals().copy() namespace.update(locals()) - code.InteractiveConsole(namespace).interact( - _("The variable `m' is the %(listname)s MailList instance")) + if dolist: + ban = _("The variable `m' is the %(listname)s MailList instance") + else: + ban = None + code.InteractiveConsole(namespace).interact(ban) @@ -1,6 +1,6 @@ #! /bin/sh -# From configure.in Revision: 2.39.2.4 +# From configure.in Revision: 2.39.2.5 # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 @@ -2069,7 +2069,6 @@ done SCRIPTS="build/bin/add_members:bin/add_members \ build/bin/arch:bin/arch \ build/bin/change_pw:bin/change_pw \ -build/bin/reset_pw:bin/reset_pw \ build/bin/check_db:bin/check_db \ build/bin/check_perms:bin/check_perms \ build/bin/cleanarch:bin/cleanarch \ @@ -2093,6 +2092,7 @@ build/bin/newlist:bin/newlist \ build/bin/pygettext.py:bin/pygettext.py \ build/bin/qrunner:bin/qrunner \ build/bin/remove_members:bin/remove_members \ +build/bin/reset_pw.py:bin/reset_pw.py \ build/bin/rmlist:bin/rmlist \ build/bin/show_qfiles:bin/show_qfiles \ build/bin/sync_members:bin/sync_members \ diff --git a/configure.in b/configure.in index 2e016ea5..628cb13e 100644 --- a/configure.in +++ b/configure.in @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2003 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2004 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -15,7 +15,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. dnl Process this file with autoconf to produce a configure script. -AC_REVISION($Revision: 7270 $) +AC_REVISION($Revision: 7272 $) AC_PREREQ(2.0) AC_INIT(src/common.h) @@ -545,7 +545,6 @@ AC_DEFUN(MM_SCRIPTS, [dnl bin/add_members \ bin/arch \ bin/change_pw \ -bin/reset_pw \ bin/check_db \ bin/check_perms \ bin/cleanarch \ @@ -569,6 +568,7 @@ bin/newlist \ bin/pygettext.py \ bin/qrunner \ bin/remove_members \ +bin/reset_pw.py \ bin/rmlist \ bin/show_qfiles \ bin/sync_members \ |