summaryrefslogtreecommitdiff
path: root/src/mailman/utilities/importer.py
diff options
context:
space:
mode:
authorBarry Warsaw2015-03-25 22:32:56 -0400
committerBarry Warsaw2015-03-25 22:32:56 -0400
commit56c852bff0aa8c92aff92be5888fc6e4d50b5704 (patch)
treed6ec02624c4d540b98d80503abca0e2511e559c8 /src/mailman/utilities/importer.py
parent187bd00e812bb7db44b7aedc5cf0040090724922 (diff)
parenta75be4230498933792e6ed02504ab4ab3e600f90 (diff)
downloadmailman-56c852bff0aa8c92aff92be5888fc6e4d50b5704.tar.gz
mailman-56c852bff0aa8c92aff92be5888fc6e4d50b5704.tar.zst
mailman-56c852bff0aa8c92aff92be5888fc6e4d50b5704.zip
Diffstat (limited to 'src/mailman/utilities/importer.py')
-rw-r--r--src/mailman/utilities/importer.py23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/mailman/utilities/importer.py b/src/mailman/utilities/importer.py
index 8590d9b1b..bb4273b12 100644
--- a/src/mailman/utilities/importer.py
+++ b/src/mailman/utilities/importer.py
@@ -32,6 +32,7 @@ from mailman.config import config
from mailman.core.errors import MailmanError
from mailman.handlers.decorate import decorate, decorate_template
from mailman.interfaces.action import Action, FilterAction
+from mailman.interfaces.address import IEmailValidator
from mailman.interfaces.archiver import ArchivePolicy
from mailman.interfaces.autorespond import ResponseAction
from mailman.interfaces.bans import IBanManager
@@ -387,11 +388,17 @@ def import_config_pck(mlist, config_dict):
regulars_set = set(config_dict.get('members', {}))
digesters_set = set(config_dict.get('digest_members', {}))
members = regulars_set.union(digesters_set)
- import_roster(mlist, config_dict, members, MemberRole.member)
- import_roster(mlist, config_dict, config_dict.get('owner', []),
- MemberRole.owner)
- import_roster(mlist, config_dict, config_dict.get('moderator', []),
- MemberRole.moderator)
+ # Don't send welcome messages when we import the rosters.
+ send_welcome_message = mlist.send_welcome_message
+ mlist.send_welcome_message = False
+ try:
+ import_roster(mlist, config_dict, members, MemberRole.member)
+ import_roster(mlist, config_dict, config_dict.get('owner', []),
+ MemberRole.owner)
+ import_roster(mlist, config_dict, config_dict.get('moderator', []),
+ MemberRole.moderator)
+ finally:
+ mlist.send_welcome_message = send_welcome_message
@@ -408,6 +415,7 @@ def import_roster(mlist, config_dict, members, role):
:type role: MemberRole enum
"""
usermanager = getUtility(IUserManager)
+ validator = getUtility(IEmailValidator)
roster = mlist.get_roster(role)
for email in members:
# For owners and members, the emails can have a mixed case, so
@@ -427,8 +435,13 @@ def import_roster(mlist, config_dict, members, role):
merged_members.update(config_dict.get('digest_members', {}))
if merged_members.get(email, 0) != 0:
original_email = bytes_to_str(merged_members[email])
+ if not validator.is_valid(original_email):
+ original_email = email
else:
original_email = email
+ if not validator.is_valid(original_email):
+ # Skip this one entirely.
+ continue
address = usermanager.create_address(original_email)
address.verified_on = datetime.datetime.now()
user.link(address)