#! /usr/bin/env python # # Copyright (C) 1998,1999,2000 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 # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """Move a list to a new directory. What this really does is just update the three archive list attributes public_archive_file_dir, private_archive_file_dir, and archive_directory by recalculating them based on the new Defaults. It then saves the list. Usage: move_list [options] listname Options: --help -h Print this help message and exit. listname must be a valid mailing list name and is required. """ import os import sys import string import getopt import paths from Mailman import Errors from Mailman import MailList from Mailman import mm_cfg def usage(code, msg=''): print __doc__ if msg: print msg sys.exit(code) def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'h', ['help']) except getopt.error, msg: usage(1, msg) for opt, arg in opts: if opt in ('-h', '--help'): usage(0) if len(args) <> 1: usage(1) try: listname = string.lower(args[0]) except IndexError: usage(1, 'You must supply a list name.') try: mlist = MailList.MailList(listname) except Errors.MMListError, e: usage(1, 'No such list "%s"\n%s' % (listname, e)) try: mlist.public_archive_file_dir = mm_cfg.PUBLIC_ARCHIVE_FILE_DIR mlist.private_archive_file_dir = os.path.join( mm_cfg.PRIVATE_ARCHIVE_FILE_DIR, mlist._internal_name + '.mbox') mlist.archive_directory = os.path.join( mm_cfg.PRIVATE_ARCHIVE_FILE_DIR, mlist._internal_name) finally: mlist.Save() mlist.Unlock() if __name__ == '__main__': main()