summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Mailman/chains/accept.py2
-rw-r--r--Mailman/configuration.py3
-rw-r--r--Mailman/docs/chains.txt10
-rw-r--r--Mailman/queue/docs/incoming.txt20
-rw-r--r--Mailman/queue/incoming.py2
-rw-r--r--Mailman/queue/pipeline.py39
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
+