diff options
| author | Barry Warsaw | 2008-01-13 16:17:38 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2008-01-13 16:17:38 -0500 |
| commit | 0d0c030d50e4dbd11f33ccddb96cf13fd3470cd2 (patch) | |
| tree | 4e182668a895beabcb35a7659c37ac2fb04ca5bf /Mailman/Handlers/CookHeaders.py | |
| parent | 90355248db6f6619148abb2a9137c3a564345729 (diff) | |
| download | mailman-0d0c030d50e4dbd11f33ccddb96cf13fd3470cd2.tar.gz mailman-0d0c030d50e4dbd11f33ccddb96cf13fd3470cd2.tar.zst mailman-0d0c030d50e4dbd11f33ccddb96cf13fd3470cd2.zip | |
Add an interface IArchiver which is used to calculate urls and send messages
to the archiver. Also add a plugin architecture for easily overriding the
archiver, and hook this into the setup.py script.
Updated CookHeaders.py and Scrubber.py handlers to use the plugged archiver.
Updated doctests as appropriate.
Fix a typo in the setup.py file.
Diffstat (limited to 'Mailman/Handlers/CookHeaders.py')
| -rw-r--r-- | Mailman/Handlers/CookHeaders.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/Mailman/Handlers/CookHeaders.py b/Mailman/Handlers/CookHeaders.py index cb14853d5..0f558753a 100644 --- a/Mailman/Handlers/CookHeaders.py +++ b/Mailman/Handlers/CookHeaders.py @@ -26,7 +26,7 @@ from email.Utils import parseaddr, formataddr, getaddresses from Mailman import Utils from Mailman import Version -from Mailman.app.archiving import get_base_archive_url +from Mailman.app.archiving import get_archiver from Mailman.configuration import config from Mailman.i18n import _ from Mailman.interfaces import Personalization, ReplyToMunging @@ -200,6 +200,7 @@ def process(mlist, msg, msgdata): 'List-Unsubscribe': subfieldfmt % (listinfo, mlist.leave_address), 'List-Subscribe' : subfieldfmt % (listinfo, mlist.join_address), }) + archiver = get_archiver() if msgdata.get('reduced_list_headers'): headers['X-List-Administrivia'] = 'yes' else: @@ -208,10 +209,17 @@ def process(mlist, msg, msgdata): headers['List-Post'] = '<mailto:%s>' % mlist.posting_address # Add this header if we're archiving if mlist.archive: - archiveurl = get_base_archive_url(mlist) - if archiveurl.endswith('/'): - archiveurl = archiveurl[:-1] + archiveurl = archiver.get_list_url(mlist) headers['List-Archive'] = '<%s>' % archiveurl + # XXX RFC 2369 also defines a List-Owner header which we are not currently + # supporting, but should. + # + # Draft RFC 5064 defines an Archived-At header which contains the pointer + # directly to the message in the archive. If the currently defined + # archiver can tell us the URL, go ahead and include this header. + archived_at = archiver.get_message_url(mlist, msg) + if archived_at is not None: + headers['Archived-At'] = archived_at # First we delete any pre-existing headers because the RFC permits only # one copy of each, and we want to be sure it's ours. for h, v in headers.items(): |
