diff options
Diffstat (limited to 'Mailman/pipeline/to_outgoing.py')
| -rw-r--r-- | Mailman/pipeline/to_outgoing.py | 70 |
1 files changed, 43 insertions, 27 deletions
diff --git a/Mailman/pipeline/to_outgoing.py b/Mailman/pipeline/to_outgoing.py index 21ba8b0d5..81d66ce4b 100644 --- a/Mailman/pipeline/to_outgoing.py +++ b/Mailman/pipeline/to_outgoing.py @@ -22,36 +22,52 @@ posted to the list membership. Anything else that needs to go out to some recipient should just be placed in the out queue directly. """ +__metaclass__ = type +__all__ = ['ToOutgoing'] + + +from zope.interface import implements + from Mailman.configuration import config -from Mailman.interfaces import Personalization +from Mailman.i18n import _ +from Mailman.interfaces import IHandler, Personalization from Mailman.queue import Switchboard -def process(mlist, msg, msgdata): - interval = config.VERP_DELIVERY_INTERVAL - # Should we VERP this message? If personalization is enabled for this - # list and VERP_PERSONALIZED_DELIVERIES is true, then yes we VERP it. - # Also, if personalization is /not/ enabled, but VERP_DELIVERY_INTERVAL is - # set (and we've hit this interval), then again, this message should be - # VERPed. Otherwise, no. - # - # Note that the verp flag may already be set, e.g. by mailpasswds using - # VERP_PASSWORD_REMINDERS. Preserve any existing verp flag. - if 'verp' in msgdata: - pass - elif mlist.personalize <> Personalization.none: - if config.VERP_PERSONALIZED_DELIVERIES: +class ToOutgoing: + """Send the message to the outgoing queue.""" + + implements(IHandler) + + name = 'to-outgoing' + description = _('Send the message to the outgoing queue.') + + def process(self, mlist, msg, msgdata): + """See `IHandler`.""" + interval = config.VERP_DELIVERY_INTERVAL + # Should we VERP this message? If personalization is enabled for this + # list and VERP_PERSONALIZED_DELIVERIES is true, then yes we VERP it. + # Also, if personalization is /not/ enabled, but + # VERP_DELIVERY_INTERVAL is set (and we've hit this interval), then + # again, this message should be VERPed. Otherwise, no. + # + # Note that the verp flag may already be set, e.g. by mailpasswds + # using VERP_PASSWORD_REMINDERS. Preserve any existing verp flag. + if 'verp' in msgdata: + pass + elif mlist.personalize <> Personalization.none: + if config.VERP_PERSONALIZED_DELIVERIES: + msgdata['verp'] = True + elif interval == 0: + # Never VERP + pass + elif interval == 1: + # VERP every time msgdata['verp'] = True - elif interval == 0: - # Never VERP - pass - elif interval == 1: - # VERP every time - msgdata['verp'] = True - else: - # VERP every `interval' number of times - msgdata['verp'] = not (int(mlist.post_id) % interval) - # And now drop the message in qfiles/out - outq = Switchboard(config.OUTQUEUE_DIR) - outq.enqueue(msg, msgdata, listname=mlist.fqdn_listname) + else: + # VERP every `interval' number of times + msgdata['verp'] = not (int(mlist.post_id) % interval) + # And now drop the message in qfiles/out + outq = Switchboard(config.OUTQUEUE_DIR) + outq.enqueue(msg, msgdata, listname=mlist.fqdn_listname) |
