diff options
| author | Barry Warsaw | 2008-09-29 09:19:52 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2008-09-29 09:19:52 -0400 |
| commit | 20a97a4163774212ad9f16c5a2e3abcbf3ecf918 (patch) | |
| tree | eae145cfae3b3be448282e545a4f5ed810991f50 /mailman/app/pipelines.py | |
| parent | 73a3660cdf0bda56689f9fd0f7f7ac53c7aa0422 (diff) | |
| download | mailman-20a97a4163774212ad9f16c5a2e3abcbf3ecf918.tar.gz mailman-20a97a4163774212ad9f16c5a2e3abcbf3ecf918.tar.zst mailman-20a97a4163774212ad9f16c5a2e3abcbf3ecf918.zip | |
Diffstat (limited to 'mailman/app/pipelines.py')
| -rw-r--r-- | mailman/app/pipelines.py | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/mailman/app/pipelines.py b/mailman/app/pipelines.py deleted file mode 100644 index 949ed9e42..000000000 --- a/mailman/app/pipelines.py +++ /dev/null @@ -1,122 +0,0 @@ -# Copyright (C) 2008 by the Free Software Foundation, Inc. -# -# This file is part of GNU Mailman. -# -# GNU Mailman 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 3 of the License, or (at your option) -# any later version. -# -# GNU Mailman 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 -# GNU Mailman. If not, see <http://www.gnu.org/licenses/>. - -"""Pipeline processor.""" - -__metaclass__ = type -__all__ = [ - 'initialize', - 'process', - ] - - -from zope.interface import implements -from zope.interface.verify import verifyObject - -from mailman.app.plugins import get_plugins -from mailman.configuration import config -from mailman.i18n import _ -from mailman.interfaces import IHandler, IPipeline - - - -def process(mlist, msg, msgdata, pipeline_name='built-in'): - """Process the message through the given pipeline. - - :param mlist: the IMailingList for this message. - :param msg: The Message object. - :param msgdata: The message metadata dictionary. - :param pipeline_name: The name of the pipeline to process through. - """ - pipeline = config.pipelines[pipeline_name] - for handler in pipeline: - handler.process(mlist, msg, msgdata) - - - -class BasePipeline: - """Base pipeline implementation.""" - - implements(IPipeline) - - _default_handlers = () - - def __init__(self): - self._handlers = [] - for handler_name in self._default_handlers: - self._handlers.append(config.handlers[handler_name]) - - def __iter__(self): - """See `IPipeline`.""" - for handler in self._handlers: - yield handler - - -class BuiltInPipeline(BasePipeline): - """The built-in pipeline.""" - - name = 'built-in' - description = _('The built-in pipeline.') - - _default_handlers = ( - 'mime-delete', - 'scrubber', - 'tagger', - 'calculate-recipients', - 'avoid-duplicates', - 'cleanse', - 'cleanse-dkim', - 'cook-headers', - 'to-digest', - 'to-archive', - 'to-usenet', - 'after-delivery', - 'acknowledge', - 'to-outgoing', - ) - - -class VirginPipeline(BasePipeline): - """The processing pipeline for virgin messages. - - Virgin messages are those that are crafted internally by Mailman. - """ - name = 'virgin' - description = _('The virgin queue pipeline.') - - _default_handlers = ( - 'cook-headers', - 'to-outgoing', - ) - - - -def initialize(): - """Initialize the pipelines.""" - # Find all handlers in the registered plugins. - for handler_finder in get_plugins('mailman.handlers'): - for handler_class in handler_finder(): - handler = handler_class() - verifyObject(IHandler, handler) - assert handler.name not in config.handlers, ( - 'Duplicate handler "%s" found in %s' % - (handler.name, handler_finder)) - config.handlers[handler.name] = handler - # Set up some pipelines. - for pipeline_class in (BuiltInPipeline, VirginPipeline): - pipeline = pipeline_class() - config.pipelines[pipeline.name] = pipeline |
