diff options
| -rw-r--r-- | Mailman/chains/accept.py | 2 | ||||
| -rw-r--r-- | Mailman/configuration.py | 3 | ||||
| -rw-r--r-- | Mailman/docs/chains.txt | 10 | ||||
| -rw-r--r-- | Mailman/queue/docs/incoming.txt | 20 | ||||
| -rw-r--r-- | Mailman/queue/incoming.py | 2 | ||||
| -rw-r--r-- | Mailman/queue/pipeline.py | 39 |
6 files changed, 57 insertions, 19 deletions
diff --git a/Mailman/chains/accept.py b/Mailman/chains/accept.py index a6a9a45eb..4b363da9e 100644 --- a/Mailman/chains/accept.py +++ b/Mailman/chains/accept.py @@ -50,6 +50,6 @@ class AcceptChain(TerminalChainBase): rule_misses = msgdata.get('rule_misses') if rule_misses: msg['X-Mailman-Rule-Misses'] = SEMISPACE.join(rule_misses) - accept_queue = Switchboard(config.PREPQUEUE_DIR) + accept_queue = Switchboard(config.PIPELINEQUEUE_DIR) accept_queue.enqueue(msg, msgdata) log.info('ACCEPT: %s', msg.get('message-id', 'n/a')) diff --git a/Mailman/configuration.py b/Mailman/configuration.py index 7ed2f8a6f..9c850295c 100644 --- a/Mailman/configuration.py +++ b/Mailman/configuration.py @@ -36,6 +36,7 @@ DEFAULT_QRUNNERS = ( '.incoming.IncomingRunner', '.news.NewsRunner', '.outgoing.OutgoingRunner', + '.pipeline.PipelineRunner', '.retry.RetryRunner', '.virgin.VirginRunner', ) @@ -136,7 +137,7 @@ class Configuration(object): self.MAILDIR_DIR = join(qdir, 'maildir') self.NEWSQUEUE_DIR = join(qdir, 'news') self.OUTQUEUE_DIR = join(qdir, 'out') - self.PREPQUEUE_DIR = join(qdir, 'prepare') + self.PIPELINEQUEUE_DIR = join(qdir, 'pipeline') self.RETRYQUEUE_DIR = join(qdir, 'retry') self.SHUNTQUEUE_DIR = join(qdir, 'shunt') self.VIRGINQUEUE_DIR = join(qdir, 'virgin') diff --git a/Mailman/docs/chains.txt b/Mailman/docs/chains.txt index 433ee8e8e..16bebfbba 100644 --- a/Mailman/docs/chains.txt +++ b/Mailman/docs/chains.txt @@ -269,10 +269,10 @@ processed and sent on to the list membership. >>> print 'LOG:', fp.read() LOG: ... ACCEPT: <first> - >>> prepq = Switchboard(config.PREPQUEUE_DIR) - >>> len(prepq.files) + >>> pipelineq = Switchboard(config.PIPELINEQUEUE_DIR) + >>> len(pipelineq.files) 1 - >>> qmsg, qdata = prepq.dequeue(prepq.files[0]) + >>> qmsg, qdata = pipelineq.dequeue(pipelineq.files[0]) >>> print qmsg.as_string() From: aperson@example.com To: _xtest@example.com @@ -306,7 +306,7 @@ the Hold handler from previous versions of Mailman. u'The built-in moderation chain.' The previously created message is innocuous enough that it should pass through -all default rules. This message will end up in the prep queue. +all default rules. This message will end up in the pipeline queue. >>> file_pos = fp.tell() >>> from Mailman.app.chains import process @@ -315,7 +315,7 @@ all default rules. This message will end up in the prep queue. >>> print 'LOG:', fp.read() LOG: ... ACCEPT: <first> - >>> qmsg, qdata = prepq.dequeue(prepq.files[0]) + >>> qmsg, qdata = pipelineq.dequeue(pipelineq.files[0]) >>> print qmsg.as_string() From: aperson@example.com To: _xtest@example.com diff --git a/Mailman/queue/docs/incoming.txt b/Mailman/queue/docs/incoming.txt index 04c0cfa04..9dc22a9ef 100644 --- a/Mailman/queue/docs/incoming.txt +++ b/Mailman/queue/docs/incoming.txt @@ -22,7 +22,7 @@ Accepted messages We have a message that is going to be sent to the mailing list. This message is so perfectly fine for posting that it will be accepted and forward to the -prep queue. +pipeline queue. >>> msg = message_from_string("""\ ... From: aperson@example.com @@ -46,18 +46,18 @@ The incoming queue runner runs until it is empty. >>> incoming = make_testable_runner(IncomingRunner) >>> incoming.run() -And now the message is in the prep queue. +And now the message is in the pipeline queue. >>> from Mailman.configuration import config >>> from Mailman.queue import Switchboard - >>> prep_queue = Switchboard(config.PREPQUEUE_DIR) - >>> len(prep_queue.files) + >>> pipeline_queue = Switchboard(config.PIPELINEQUEUE_DIR) + >>> len(pipeline_queue.files) 1 >>> incoming_queue = Switchboard(config.INQUEUE_DIR) >>> len(incoming_queue.files) 0 >>> from Mailman.tests.helpers import get_queue_messages - >>> item = get_queue_messages(prep_queue)[0] + >>> item = get_queue_messages(pipeline_queue)[0] >>> print item.msg.as_string() From: aperson@example.com To: _xtest@example.com @@ -78,8 +78,8 @@ Held messages ------------- The list moderator sets the emergency flag on the mailing list. The built-in -chain will now hold all posted messages, so nothing will show up in the prep -queue. +chain will now hold all posted messages, so nothing will show up in the +pipeline queue. # XXX This checks the vette log file because there is no other evidence # that this chain has done anything. @@ -92,7 +92,7 @@ queue. >>> inject(u'_xtest@example.com', msg) >>> file_pos = fp.tell() >>> incoming.run() - >>> len(prep_queue.files) + >>> len(pipeline_queue.files) 0 >>> len(incoming_queue.files) 0 @@ -124,7 +124,7 @@ new chain and set it as the mailing list's start chain. >>> inject(u'_xtest@example.com', msg) >>> file_pos = fp.tell() >>> incoming.run() - >>> len(prep_queue.files) + >>> len(pipeline_queue.files) 0 >>> len(incoming_queue.files) 0 @@ -158,7 +158,7 @@ tests above. >>> inject(u'_xtest@example.com', msg) >>> file_pos = fp.tell() >>> incoming.run() - >>> len(prep_queue.files) + >>> len(pipeline_queue.files) 0 >>> len(incoming_queue.files) 0 diff --git a/Mailman/queue/incoming.py b/Mailman/queue/incoming.py index 649ce2213..55d653990 100644 --- a/Mailman/queue/incoming.py +++ b/Mailman/queue/incoming.py @@ -26,8 +26,6 @@ prepared for delivery. Rejections, discards, and holds are processed immediately. """ - - from Mailman.app.chains import process from Mailman.configuration import config from Mailman.queue import Runner diff --git a/Mailman/queue/pipeline.py b/Mailman/queue/pipeline.py new file mode 100644 index 000000000..5ccee0a20 --- /dev/null +++ b/Mailman/queue/pipeline.py @@ -0,0 +1,39 @@ +# Copyright (C) 2008 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +"""The pipeline queue runner. + +This runner's purpose is to take messages that have been approved for posting +through the 'preparation pipeline'. This pipeline adds, deletes and modifies +headers, calculates message recipients, and more. +""" + +from Mailman.app.pipeline import process +from Mailman.configuration import config +from Mailman.queue import runner + + + +class PipelineRunner(Runner): + QDIR = config.PIPELINEQUEUE_DIR + + def _dispose(self, mlist, msg, msgdata): + # Process the message through the mailing list's pipeline. + process(mlist, msg, msgdata, mlist.pipeline) + # Do not keep this message queued. + return False + |
