summaryrefslogtreecommitdiff
path: root/src/mailman/utilities/importer.py
diff options
context:
space:
mode:
authorAurélien Bompard2013-10-03 18:37:04 +0200
committerAurélien Bompard2013-10-03 18:37:04 +0200
commit0fd9307139c0c5f2245d5df39e304b5b9d06df3e (patch)
tree808f7b90bcc77f373480f3919031463566241a1e /src/mailman/utilities/importer.py
parent5e7a56fe2dee15d5ea1be7942774b20560231821 (diff)
downloadmailman-0fd9307139c0c5f2245d5df39e304b5b9d06df3e.tar.gz
mailman-0fd9307139c0c5f2245d5df39e304b5b9d06df3e.tar.zst
mailman-0fd9307139c0c5f2245d5df39e304b5b9d06df3e.zip
Diffstat (limited to 'src/mailman/utilities/importer.py')
-rw-r--r--src/mailman/utilities/importer.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/mailman/utilities/importer.py b/src/mailman/utilities/importer.py
index 0822f3362..14214438b 100644
--- a/src/mailman/utilities/importer.py
+++ b/src/mailman/utilities/importer.py
@@ -103,6 +103,10 @@ def nonmember_action_mapping(value):
elif value == 3:
return Action.discard
+
+def unicode_to_string(value):
+ return str(value) if value is not None else None
+
# Attributes in Mailman 2 which have a different type in Mailman 3.
TYPES = dict(
@@ -124,6 +128,7 @@ TYPES = dict(
forward_unrecognized_bounces_to=UnrecognizedBounceDisposition,
default_member_action=member_action_mapping,
default_nonmember_action=nonmember_action_mapping,
+ moderator_password=unicode_to_string,
)
@@ -177,7 +182,15 @@ def import_config_pck(mlist, config_dict):
# strings).
if hasattr(mlist, key):
if isinstance(value, str):
- value = unicode(value, 'ascii')
+ for encoding in ("ascii", "utf-8"):
+ try:
+ value = unicode(value, encoding)
+ except UnicodeDecodeError, e:
+ continue
+ else:
+ break
+ if isinstance(value, str): # we did our best
+ value = unicode(value, 'ascii', 'replace')
# Some types require conversion.
converter = TYPES.get(key)
if converter is not None: