diff options
| author | Barry Warsaw | 2008-12-27 23:26:32 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2008-12-27 23:26:32 -0500 |
| commit | 88af638c21e2b356ebd0d9e045a8d028dfb5aedd (patch) | |
| tree | 9145645c4ae68abc45ffb7900ffebe84625df943 | |
| parent | 1ffa4c74935a56a3c5de736fab052e33e4ab3d38 (diff) | |
| download | mailman-88af638c21e2b356ebd0d9e045a8d028dfb5aedd.tar.gz mailman-88af638c21e2b356ebd0d9e045a8d028dfb5aedd.tar.zst mailman-88af638c21e2b356ebd0d9e045a8d028dfb5aedd.zip | |
| -rw-r--r-- | mailman/archiving/mailarchive.py | 2 | ||||
| -rw-r--r-- | mailman/archiving/mhonarc.py | 2 | ||||
| -rw-r--r-- | mailman/docs/archivers.txt | 4 | ||||
| -rw-r--r-- | mailman/docs/styles.txt | 3 | ||||
| -rw-r--r-- | mailman/inject.py | 32 | ||||
| -rw-r--r-- | mailman/queue/command.py | 9 | ||||
| -rw-r--r-- | mailman/queue/docs/command.txt | 18 | ||||
| -rw-r--r-- | mailman/testing/testing.cfg | 5 |
8 files changed, 43 insertions, 32 deletions
diff --git a/mailman/archiving/mailarchive.py b/mailman/archiving/mailarchive.py index ded402ab4..b6bf349a4 100644 --- a/mailman/archiving/mailarchive.py +++ b/mailman/archiving/mailarchive.py @@ -51,7 +51,7 @@ class MailArchive: """See `IArchiver`.""" if mlist.archive_private: return None - return urljoin(config.MAIL_ARCHIVE_BASEURL, + return urljoin(config.archiver.mail_archive.base_url, quote(mlist.posting_address)) @staticmethod diff --git a/mailman/archiving/mhonarc.py b/mailman/archiving/mhonarc.py index c20c34ba0..6d6008214 100644 --- a/mailman/archiving/mhonarc.py +++ b/mailman/archiving/mhonarc.py @@ -83,7 +83,7 @@ class MHonArc: """See `IArchiver`.""" substitutions = config.__dict__.copy() substitutions['listname'] = mlist.fqdn_listname - command = Template(Defaults.MHONARC_COMMAND).safe_substitute( + command = Template(config.archiver.mhonarc.command).safe_substitute( substitutions) proc = subprocess.Popen( command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, diff --git a/mailman/docs/archivers.txt b/mailman/docs/archivers.txt index 529938d94..7ea9b1bd4 100644 --- a/mailman/docs/archivers.txt +++ b/mailman/docs/archivers.txt @@ -87,7 +87,7 @@ address at the Mail-Archive. >>> from mailman.queue.outgoing import OutgoingRunner >>> from mailman.testing.helpers import make_testable_runner - >>> outgoing = make_testable_runner(OutgoingRunner) + >>> outgoing = make_testable_runner(OutgoingRunner, 'out') >>> outgoing.run() >>> from operator import itemgetter @@ -167,7 +167,7 @@ Messages sent to a local MHonArc instance are added to its archive via a subprocess call. >>> archiver.archive_message(mlist, msg) - >>> archive_log = open(os.path.join(config.LOG_DIR, 'archiver')) + >>> archive_log = open(os.path.join(config.LOG_DIR, 'mailman')) >>> try: ... contents = archive_log.read() ... finally: diff --git a/mailman/docs/styles.txt b/mailman/docs/styles.txt index dd3aa8d07..6397666ae 100644 --- a/mailman/docs/styles.txt +++ b/mailman/docs/styles.txt @@ -47,7 +47,8 @@ would pick this up and apply it to the mailing list. >>> print mlist.msg_footer None - >>> config.DEFAULT_MSG_FOOTER = u'default footer' + >>> from mailman import Defaults + >>> Defaults.DEFAULT_MSG_FOOTER = u'default footer' >>> default_style.apply(mlist) >>> mlist.msg_footer u'default footer' diff --git a/mailman/inject.py b/mailman/inject.py index 763a161ff..1d9ece78a 100644 --- a/mailman/inject.py +++ b/mailman/inject.py @@ -26,23 +26,26 @@ from email import message_from_string from email.utils import formatdate, make_msgid from mailman.Message import Message -from mailman.configuration import config -from mailman.queue import Switchboard +from mailman.config import config -def inject_message(mlist, msg, recips=None, qdir=None): +def inject_message(mlist, msg, recips=None, switchboard=None): """Inject a message into a queue. :param mlist: The mailing list this message is destined for. + :type mlist: IMailingList :param msg: The Message object to inject. + :type msg: a Message object :param recips: Optional set of recipients to put into the message's metadata. - :param qdir: Optional queue directory to inject this message into. If not - given, the incoming queue is used. + :type recips: sequence of strings + :param switchboard: Optional name of switchboard to inject this message + into. If not given, the 'in' switchboard is used. + :type switchboard: string """ - if qdir is None: - qdir = config.INQUEUE_DIR + if switchboard is None: + switchboard = 'in' # Since we're crafting the message from whole cloth, let's make sure this # message has a Message-ID. if 'message-id' not in msg: @@ -50,7 +53,6 @@ def inject_message(mlist, msg, recips=None, qdir=None): # Ditto for Date: as required by RFC 2822. if 'date' not in msg: msg['Date'] = formatdate(localtime=True) - queue = Switchboard(qdir) kws = dict( listname=mlist.fqdn_listname, tolist=True, @@ -58,21 +60,25 @@ def inject_message(mlist, msg, recips=None, qdir=None): ) if recips is not None: kws['recips'] = recips - queue.enqueue(msg, **kws) + config.switchboards[switchboard].enqueue(msg, **kws) -def inject_text(mlist, text, recips=None, qdir=None): +def inject_text(mlist, text, recips=None, switchboard=None): """Inject a message into a queue. :param mlist: The mailing list this message is destined for. + :type mlist: IMailingList :param text: The text of the message to inject. This will be parsed into a Message object. + :type text: string :param recips: Optional set of recipients to put into the message's metadata. - :param qdir: Optional queue directory to inject this message into. If not - given, the incoming queue is used. + :type recips: sequence of strings + :param switchboard: Optional name of switchboard to inject this message + into. If not given, the 'in' switchboard is used. + :type switchboard: string """ message = message_from_string(text, Message) message.original_size = len(text) - inject_message(mlist, message, recips, qdir) + inject_message(mlist, message, recips, switchboard) diff --git a/mailman/queue/command.py b/mailman/queue/command.py index 986758ce1..407864310 100644 --- a/mailman/queue/command.py +++ b/mailman/queue/command.py @@ -40,6 +40,7 @@ from email.MIMEMessage import MIMEMessage from email.MIMEText import MIMEText from zope.interface import implements +from mailman import Defaults from mailman import Message from mailman import Utils from mailman.app.replybot import autorespond_to_sender @@ -70,7 +71,7 @@ class CommandFinder: elif msgdata.get('toleave'): self.command_lines.append('leave') elif msgdata.get('toconfirm'): - mo = re.match(config.VERP_CONFIRM_REGEXP, msg.get('to', '')) + mo = re.match(Defaults.VERP_CONFIRM_REGEXP, msg.get('to', '')) if mo: self.command_lines.append('confirm ' + mo.group('cookie')) # Extract the subject header and do RFC 2047 decoding. @@ -99,8 +100,8 @@ class CommandFinder: assert isinstance(body, basestring), 'Non-string decoded payload' lines = body.splitlines() # Use no more lines than specified - self.command_lines.extend(lines[:config.EMAIL_COMMANDS_MAX_LINES]) - self.ignored_lines.extend(lines[config.EMAIL_COMMANDS_MAX_LINES:]) + self.command_lines.extend(lines[:Defaults.EMAIL_COMMANDS_MAX_LINES]) + self.ignored_lines.extend(lines[Defaults.EMAIL_COMMANDS_MAX_LINES:]) def __iter__(self): """Return each command line, split into commands and arguments. @@ -141,7 +142,7 @@ The results of your email command are provided below. class CommandRunner(Runner): - QDIR = config.CMDQUEUE_DIR + """The email command runner.""" def _dispose(self, mlist, msg, msgdata): message_id = msg.get('message-id', 'n/a') diff --git a/mailman/queue/docs/command.txt b/mailman/queue/docs/command.txt index ce4279fff..0b384de01 100644 --- a/mailman/queue/docs/command.txt +++ b/mailman/queue/docs/command.txt @@ -25,7 +25,7 @@ sender. The command can be in the Subject header. ... """) >>> from mailman.inject import inject_message - >>> inject_message(mlist, msg, qdir=config.CMDQUEUE_DIR) + >>> inject_message(mlist, msg, switchboard='command') >>> from mailman.queue.command import CommandRunner >>> from mailman.testing.helpers import make_testable_runner >>> command = make_testable_runner(CommandRunner) @@ -34,11 +34,11 @@ sender. The command can be in the Subject header. And now the response is in the virgin queue. >>> from mailman.queue import Switchboard - >>> virgin_queue = Switchboard(config.VIRGINQUEUE_DIR) + >>> virgin_queue = config.switchboards['virgin'] >>> len(virgin_queue.files) 1 >>> from mailman.testing.helpers import get_queue_messages - >>> item = get_queue_messages(virgin_queue)[0] + >>> item = get_queue_messages('virgin')[0] >>> print item.msg.as_string() Subject: The results of your email commands From: test-bounces@example.com @@ -78,11 +78,11 @@ message is plain text. ... echo foo bar ... """) - >>> inject_message(mlist, msg, qdir=config.CMDQUEUE_DIR) + >>> inject_message(mlist, msg, switchboard='command') >>> command.run() >>> len(virgin_queue.files) 1 - >>> item = get_queue_messages(virgin_queue)[0] + >>> item = get_queue_messages('virgin')[0] >>> print item.msg.as_string() Subject: The results of your email commands From: test-bounces@example.com @@ -121,11 +121,11 @@ at by the command queue. ... echo baz qux ... """) - >>> inject_message(mlist, msg, qdir=config.CMDQUEUE_DIR) + >>> inject_message(mlist, msg, switchboard='command') >>> command.run() >>> len(virgin_queue.files) 1 - >>> item = get_queue_messages(virgin_queue)[0] + >>> item = get_queue_messages('virgin')[0] >>> print item.msg.as_string() Subject: The results of your email commands ... @@ -151,11 +151,11 @@ The 'stop' command is an alias for 'end'. ... echo baz qux ... """) - >>> inject_message(mlist, msg, qdir=config.CMDQUEUE_DIR) + >>> inject_message(mlist, msg, switchboard='command') >>> command.run() >>> len(virgin_queue.files) 1 - >>> item = get_queue_messages(virgin_queue)[0] + >>> item = get_queue_messages('virgin')[0] >>> print item.msg.as_string() Subject: The results of your email commands ... diff --git a/mailman/testing/testing.cfg b/mailman/testing/testing.cfg index 8bb720ab7..9570441dd 100644 --- a/mailman/testing/testing.cfg +++ b/mailman/testing/testing.cfg @@ -26,7 +26,7 @@ max_restarts: 1 [qrunner.bounces] max_restarts: 1 -[qrunner.commands] +[qrunner.command] max_restarts: 1 [qrunner.in] @@ -63,6 +63,9 @@ recipient: archive@mail-archive.dev [archiver.pipermail] base_url: http://www.example.com/pipermail/$listname +[archiver.mhonarc] +command: /bin/echo + [domain.example_dot_com] email_host: example.com base_url: http://www.example.com |
