summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBarry Warsaw2011-02-25 18:29:37 -0500
committerBarry Warsaw2011-02-25 18:29:37 -0500
commit5ba88a817026f19aa4b3866c4b9bf65e7ea3d016 (patch)
treebb88f3078a657123043a6c7d6ce85786e4898302 /src
parent713658b0c74ad7b6148aa0282296c66111c0c6c0 (diff)
downloadmailman-5ba88a817026f19aa4b3866c4b9bf65e7ea3d016.tar.gz
mailman-5ba88a817026f19aa4b3866c4b9bf65e7ea3d016.tar.zst
mailman-5ba88a817026f19aa4b3866c4b9bf65e7ea3d016.zip
Diffstat (limited to 'src')
-rw-r--r--src/mailman/Utils.py17
-rw-r--r--src/mailman/app/bounces.py2
-rw-r--r--src/mailman/chains/hold.py3
-rw-r--r--src/mailman/pipeline/acknowledge.py3
-rw-r--r--src/mailman/pipeline/mime_delete.py2
-rw-r--r--src/mailman/pipeline/scrubber.py3
-rw-r--r--src/mailman/queue/digest.py3
-rw-r--r--src/mailman/utilities/string.py37
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())