summaryrefslogtreecommitdiff
path: root/mailman/app/pipelines.py
diff options
context:
space:
mode:
authorBarry Warsaw2008-09-29 09:19:52 -0400
committerBarry Warsaw2008-09-29 09:19:52 -0400
commit20a97a4163774212ad9f16c5a2e3abcbf3ecf918 (patch)
treeeae145cfae3b3be448282e545a4f5ed810991f50 /mailman/app/pipelines.py
parent73a3660cdf0bda56689f9fd0f7f7ac53c7aa0422 (diff)
downloadmailman-20a97a4163774212ad9f16c5a2e3abcbf3ecf918.tar.gz
mailman-20a97a4163774212ad9f16c5a2e3abcbf3ecf918.tar.zst
mailman-20a97a4163774212ad9f16c5a2e3abcbf3ecf918.zip
Diffstat (limited to 'mailman/app/pipelines.py')
-rw-r--r--mailman/app/pipelines.py122
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