------------------------------------------------------------
revno: 6668
committer: Barry Warsaw <[email protected]>
branch nick: 3.0
timestamp: Tue 2009-01-06 23:45:34 -0500
message:
Complete the integration of MTA setup with list creation and deletion. Make
Postfix lmtp file more compliant with the Postfix docs. (Thanks Patrick
Koetter).
Fix a few more lazr.config conversion issues.
Fix bin/show_qfiles, and add a --summary switch.
modified:
mailman/Utils.py
mailman/app/lifecycle.py
mailman/bin/add_members.py
mailman/bin/create_list.py
mailman/bin/genaliases.py
mailman/bin/show_qfiles.py
mailman/mta/postfix.py
=== modified file 'mailman/Utils.py'
--- a/mailman/Utils.py 2009-01-05 05:54:19 +0000
+++ b/mailman/Utils.py 2009-01-07 04:45:34 +0000
@@ -318,8 +318,8 @@
def MakeRandomPassword(length=None):
if length is None:
- length = int(config.member_password_length)
- if as_boolean(config.user_friendly_passwords):
+ length = int(config.passwords.member_password_length)
+ if as_boolean(config.passwords.user_friendly_passwords):
password = UserFriendly_MakeRandomPassword(length)
else:
password = Secure_MakeRandomPassword(length)
=== modified file 'mailman/app/lifecycle.py'
--- a/mailman/app/lifecycle.py 2009-01-05 05:54:19 +0000
+++ b/mailman/app/lifecycle.py 2009-01-07 04:45:34 +0000
@@ -54,8 +54,7 @@
# Coordinate with the MTA, as defined in the configuration file.
module_name, class_name = config.mta.incoming.rsplit('.', 1)
__import__(module_name)
- mta = getattr(sys.modules[module_name], class_name)
- mta().create(mlist)
+ getattr(sys.modules[module_name], class_name)().create(mlist)
# Create any owners that don't yet exist, and subscribe all addresses as
# owners of the mailing list.
usermgr = config.db.user_manager
@@ -82,10 +81,9 @@
# Delete the mailing list from the database.
config.db.list_manager.delete(mailing_list)
# Do the MTA-specific list deletion tasks
-## if config.MTA:
-## modname = 'mailman.MTA.' + config.MTA
-## __import__(modname)
-## sys.modules[modname].remove(mailing_list)
+ module_name, class_name = config.mta.incoming.rsplit('.', 1)
+ __import__(module_name)
+ getattr(sys.modules[module_name], class_name)().create(mlist)
# Remove the list directory.
removeables.append(os.path.join(config.LIST_DATA_DIR, fqdn_listname))
# Remove any stale locks associated with the list.
=== modified file 'mailman/bin/add_members.py'
--- a/mailman/bin/add_members.py 2009-01-03 10:47:41 +0000
+++ b/mailman/bin/add_members.py 2009-01-07 04:45:34 +0000
@@ -28,7 +28,7 @@
from mailman.app.membership import add_member
from mailman.config import config
from mailman.core import errors
-from mailman.interfaces import AlreadySubscribedError, DeliveryMode
+from mailman.interfaces.member import AlreadySubscribedError, DeliveryMode
from mailman.options import SingleMailingListOptions
_ = i18n._
=== modified file 'mailman/bin/create_list.py'
--- a/mailman/bin/create_list.py 2009-01-03 10:13:41 +0000
+++ b/mailman/bin/create_list.py 2009-01-07 04:45:34 +0000
@@ -23,7 +23,7 @@
from mailman.app.lifecycle import create_list
from mailman.config import config
from mailman.core import errors
-from mailman.interfaces import ListAlreadyExistsError
+from mailman.interfaces.listmanager import ListAlreadyExistsError
from mailman.options import SingleMailingListOptions
@@ -32,7 +32,7 @@
class ScriptOptions(SingleMailingListOptions):
- usage=_("""\
+ usage = _("""\
%prog [options]
Create a new mailing list.
=== modified file 'mailman/bin/genaliases.py'
--- a/mailman/bin/genaliases.py 2009-01-05 00:41:05 +0000
+++ b/mailman/bin/genaliases.py 2009-01-07 04:45:34 +0000
@@ -21,7 +21,9 @@
]
-from mailman.core.plugins import get_plugin
+import sys
+
+from mailman.config import config
from mailman.i18n import _
from mailman.options import Options
@@ -52,8 +54,9 @@
options.initialize()
# Get the MTA-specific module.
- mta = get_plugin('mailman.mta')
- mta().regenerate()
+ module_path, class_path = config.mta.incoming.rsplit('.', 1)
+ __import__(module_path)
+ getattr(sys.modules[module_path], class_path)().regenerate()
=== modified file 'mailman/bin/show_qfiles.py'
--- a/mailman/bin/show_qfiles.py 2009-01-05 00:41:05 +0000
+++ b/mailman/bin/show_qfiles.py 2009-01-07 04:45:34 +0000
@@ -15,49 +15,75 @@
# You should have received a copy of the GNU General Public License along with
# GNU Mailman. If not, see <http://www.gnu.org/licenses/>.
+import os
import sys
-import optparse
+
from cPickle import load
-from mailman.configuration import config
+from mailman.config import config
from mailman.i18n import _
-from mailman.version import MAILMAN_VERSION
+from mailman.options import Options
-def parseargs():
- parser = optparse.OptionParser(version=MAILMAN_VERSION,
- usage=_("""\
+class ScriptOptions(Options):
+ usage = _("""
%%prog [options] qfiles ...
-Show the contents of one or more Mailman queue files."""))
- parser.add_option('-q', '--quiet',
- default=False, action='store_true',
- help=_("Don't print 'helpful' message delimiters."))
- parser.add_option('-C', '--config',
- help=_('Alternative configuration file to use'))
- opts, args = parser.parse_args()
- return parser, opts, args
+Show the contents of one or more Mailman queue files.""")
+
+ def add_options(self):
+ super(ScriptOptions, self).add_options()
+ self.parser.add_option(
+ '-q', '--quiet',
+ default=False, action='store_true',
+ help=_("Don't print 'helpful' message delimiters."))
+ self.parser.add_option(
+ '-s', '--summary',
+ default=False, action='store_true',
+ help=_('Show a summary of queue files.'))
def main():
- parser, opts, args = parseargs()
- config.load(opts.config)
+ options = ScriptOptions()
+ options.initialize()
- for filename in args:
- if not opts.quiet:
+ if options.options.summary:
+ queue_totals = {}
+ files_by_queue = {}
+ for switchboard in config.switchboards.values():
+ total = 0
+ file_mappings = {}
+ for filename in os.listdir(switchboard.queue_directory):
+ base, ext = os.path.splitext(filename)
+ file_mappings[ext] = file_mappings.get(ext, 0) + 1
+ total += 1
+ files_by_queue[switchboard.queue_directory] = file_mappings
+ queue_totals[switchboard.queue_directory] = total
+ # Sort by queue name.
+ for queue_directory in sorted(files_by_queue):
+ total = queue_totals[queue_directory]
+ print queue_directory
+ print _('\tfile count: $total')
+ file_mappings = files_by_queue[queue_directory]
+ for ext in sorted(file_mappings):
+ print '\t{0}: {1}'.format(ext, file_mappings[ext])
+ return
+ # No summary.
+ for filename in options.arguments:
+ if not options.options.quiet:
print '====================>', filename
- fp = open(filename)
- if filename.endswith(".pck"):
- msg = load(fp)
- data = load(fp)
- if data.get('_parsemsg'):
- sys.stdout.write(msg)
+ with open(filename) as fp:
+ if filename.endswith('.pck'):
+ msg = load(fp)
+ data = load(fp)
+ if data.get('_parsemsg'):
+ sys.stdout.write(msg)
+ else:
+ sys.stdout.write(msg.as_string())
else:
- sys.stdout.write(msg.as_string())
- else:
- sys.stdout.write(fp.read())
+ sys.stdout.write(fp.read())
=== modified file 'mailman/mta/postfix.py'
--- a/mailman/mta/postfix.py 2009-01-07 00:55:59 +0000
+++ b/mailman/mta/postfix.py 2009-01-07 04:45:34 +0000
@@ -98,13 +98,13 @@
# len('-subscribe') + '@'.
longest = len(list_name + domain) + 10
print >> fp, """\
-...@{1:{3}}lmtp:{2.mta.lmtp_host}:{2.mta.lmtp_port}""".format(
+...@{1:{3}}lmtp:inet:{2.mta.lmtp_host}:{2.mta.lmtp_port}""".format(
list_name, domain, config,
# Add 1 because the bare list name has no dash.
longest + 1)
for destination in SUBDESTINATIONS:
print >> fp, """\
-{0}-...@{2:{4}}lmtp:{3.mta.lmtp_host}:{3.mta.lmtp_port}""".format(
+{0}-...@{2:{4}}lmtp:inet:{3.mta.lmtp_host}:{3.mta.lmtp_port}""".format(
list_name, destination, domain, config,
longest - len(destination))
print >> fp
--
Primary development focus
https://code.launchpad.net/~mailman-coders/mailman/3.0
You are receiving this branch notification because you are subscribed to it.
_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe:
http://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org