diff options
| author | Barry Warsaw | 2011-02-25 18:29:37 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2011-02-25 18:29:37 -0500 |
| commit | 5ba88a817026f19aa4b3866c4b9bf65e7ea3d016 (patch) | |
| tree | bb88f3078a657123043a6c7d6ce85786e4898302 | |
| parent | 713658b0c74ad7b6148aa0282296c66111c0c6c0 (diff) | |
| download | mailman-5ba88a817026f19aa4b3866c4b9bf65e7ea3d016.tar.gz mailman-5ba88a817026f19aa4b3866c4b9bf65e7ea3d016.tar.zst mailman-5ba88a817026f19aa4b3866c4b9bf65e7ea3d016.zip | |
| -rw-r--r-- | src/mailman/Utils.py | 17 | ||||
| -rw-r--r-- | src/mailman/app/bounces.py | 2 | ||||
| -rw-r--r-- | src/mailman/chains/hold.py | 3 | ||||
| -rw-r--r-- | src/mailman/pipeline/acknowledge.py | 3 | ||||
| -rw-r--r-- | src/mailman/pipeline/mime_delete.py | 2 | ||||
| -rw-r--r-- | src/mailman/pipeline/scrubber.py | 3 | ||||
| -rw-r--r-- | src/mailman/queue/digest.py | 3 | ||||
| -rw-r--r-- | src/mailman/utilities/string.py | 37 |
8 files changed, 46 insertions, 24 deletions
diff --git a/src/mailman/Utils.py b/src/mailman/Utils.py index 18b7a8b95..37dcbe5e6 100644 --- a/src/mailman/Utils.py +++ b/src/mailman/Utils.py @@ -36,8 +36,6 @@ import errno import logging # pylint: disable-msg=E0611,W0403 -from email.errors import HeaderParseError -from email.header import decode_header, make_header from string import ascii_letters, digits, whitespace from zope.component import getUtility @@ -337,18 +335,3 @@ def uquote(s): a.append(c) # Join characters together and coerce to byte string return str(EMPTYSTRING.join(a)) - - -def oneline(s, cset='us-ascii', in_unicode=False): - # Decode header string in one line and convert into specified charset - try: - h = make_header(decode_header(s)) - ustr = h.__unicode__() - line = UEMPTYSTRING.join(ustr.splitlines()) - if in_unicode: - return line - else: - return line.encode(cset, 'replace') - except (LookupError, UnicodeError, ValueError, HeaderParseError): - # possibly charset problem. return with undecoded string in one line. - return EMPTYSTRING.join(s.splitlines()) diff --git a/src/mailman/app/bounces.py b/src/mailman/app/bounces.py index 7504c441b..7f6507a14 100644 --- a/src/mailman/app/bounces.py +++ b/src/mailman/app/bounces.py @@ -30,11 +30,11 @@ import logging from email.mime.message import MIMEMessage from email.mime.text import MIMEText -from mailman.Utils import oneline from mailman.app.finder import find_components from mailman.core.i18n import _ from mailman.email.message import UserNotification from mailman.interfaces.bounce import IBounceDetector +from mailman.utilities.string import oneline log = logging.getLogger('mailman.config') diff --git a/src/mailman/chains/hold.py b/src/mailman/chains/hold.py index 00dd9cf4b..ff53621ab 100644 --- a/src/mailman/chains/hold.py +++ b/src/mailman/chains/hold.py @@ -35,7 +35,7 @@ from zope.component import getUtility from zope.event import notify from zope.interface import implements -from mailman.Utils import maketext, oneline, wrap +from mailman.Utils import maketext, wrap from mailman.app.moderator import hold_message from mailman.app.replybot import can_acknowledge from mailman.chains.base import ChainNotification, TerminalChainBase @@ -46,6 +46,7 @@ from mailman.interfaces.autorespond import IAutoResponseSet, Response from mailman.interfaces.languages import ILanguageManager from mailman.interfaces.pending import IPendable, IPendings from mailman.interfaces.usermanager import IUserManager +from mailman.utilities.string import oneline log = logging.getLogger('mailman.vette') diff --git a/src/mailman/pipeline/acknowledge.py b/src/mailman/pipeline/acknowledge.py index 744238f44..fcde6d6a5 100644 --- a/src/mailman/pipeline/acknowledge.py +++ b/src/mailman/pipeline/acknowledge.py @@ -36,6 +36,7 @@ from mailman.core.i18n import _ from mailman.email.message import UserNotification from mailman.interfaces.handler import IHandler from mailman.interfaces.languages import ILanguageManager +from mailman.utilities.string import oneline @@ -72,7 +73,7 @@ class Acknowledge: realname = mlist.real_name text = Utils.maketext( 'postack.txt', - {'subject' : Utils.oneline(original_subject, charset), + {'subject' : oneline(original_subject, charset), 'listname' : realname, 'listinfo_url': mlist.script_url('listinfo'), 'optionsurl' : member.options_url, diff --git a/src/mailman/pipeline/mime_delete.py b/src/mailman/pipeline/mime_delete.py index 3066f4003..43197a878 100644 --- a/src/mailman/pipeline/mime_delete.py +++ b/src/mailman/pipeline/mime_delete.py @@ -41,12 +41,12 @@ from email.Iterators import typed_subpart_iterator from os.path import splitext from zope.interface import implements -from mailman.Utils import oneline from mailman.config import config from mailman.core import errors from mailman.core.i18n import _ from mailman.interfaces.handler import IHandler from mailman.queue import Switchboard +from mailman.utilities.string import oneline from mailman.version import VERSION diff --git a/src/mailman/pipeline/scrubber.py b/src/mailman/pipeline/scrubber.py index a102d9f6b..63b133024 100644 --- a/src/mailman/pipeline/scrubber.py +++ b/src/mailman/pipeline/scrubber.py @@ -40,13 +40,14 @@ from mimetypes import guess_all_extensions from string import Template from zope.interface import implements -from mailman.Utils import oneline, websafe +from mailman.Utils import websafe from mailman.config import config from mailman.core.errors import DiscardMessage from mailman.core.i18n import _ from mailman.interfaces.handler import IHandler from mailman.utilities.filesystem import makedirs from mailman.utilities.modules import find_name +from mailman.utilities.string import oneline # Path characters for common platforms diff --git a/src/mailman/queue/digest.py b/src/mailman/queue/digest.py index aaade6c4d..a2feff448 100644 --- a/src/mailman/queue/digest.py +++ b/src/mailman/queue/digest.py @@ -38,7 +38,7 @@ from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.utils import formatdate, getaddresses, make_msgid -from mailman.Utils import maketext, oneline, wrap +from mailman.Utils import maketext, wrap from mailman.config import config from mailman.core.errors import DiscardMessage from mailman.core.i18n import _ @@ -47,6 +47,7 @@ from mailman.pipeline.decorate import decorate from mailman.pipeline.scrubber import process as scrubber from mailman.queue import Runner from mailman.utilities.mailbox import Mailbox +from mailman.utilities.string import oneline diff --git a/src/mailman/utilities/string.py b/src/mailman/utilities/string.py index 44b99876e..f53174c14 100644 --- a/src/mailman/utilities/string.py +++ b/src/mailman/utilities/string.py @@ -21,13 +21,20 @@ from __future__ import absolute_import, unicode_literals __metaclass__ = type __all__ = [ - 'expand' + 'expand', + 'oneline', ] import logging + +from email.errors import HeaderParseError +from email.header import decode_header, make_header from string import Template +EMPTYSTRING = '' +UEMPTYSTRING = u'' + log = logging.getLogger('mailman.error') @@ -57,3 +64,31 @@ def expand(template, substitutions, template_class=Template): except (TypeError, ValueError): # The template is really screwed up. log.exception('broken template: %s', template) + + + +def oneline(s, cset='us-ascii', in_unicode=False): + """Decode a header string in one line and convert into specified charset. + + :param s: The header string + :type s: string + :param cset: The character set (encoding) to use. + :type cset: string + :param in_unicode: Flag specifying whether to return the converted string + as a unicode (True) or an 8-bit string (False, the default). + :type in_unicode: bool + :return: The decoded header string. If an error occurs while converting + the input string, return the string undecoded, as an 8-bit string. + :rtype: string + """ + try: + h = make_header(decode_header(s)) + ustr = h.__unicode__() + line = UEMPTYSTRING.join(ustr.splitlines()) + if in_unicode: + return line + else: + return line.encode(cset, 'replace') + except (LookupError, UnicodeError, ValueError, HeaderParseError): + # possibly charset problem. return with undecoded string in one line. + return EMPTYSTRING.join(s.splitlines()) |
