diff options
Diffstat (limited to 'src/mailman/utilities/importer.py')
| -rw-r--r-- | src/mailman/utilities/importer.py | 23 |
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) |
