diff options
| author | Aurélien Bompard | 2015-06-16 00:04:35 +0200 |
|---|---|---|
| committer | Aurélien Bompard | 2015-06-17 08:24:22 +0200 |
| commit | b0e36af9d28404a54e435d9427ddffb8c7b6d4c3 (patch) | |
| tree | d9b86c415d6a95f1ff67919c3b59e91c4660be03 /src | |
| parent | 1e20893957cb7124567d26779db681cf10a91d0e (diff) | |
| download | mailman-b0e36af9d28404a54e435d9427ddffb8c7b6d4c3.tar.gz mailman-b0e36af9d28404a54e435d9427ddffb8c7b6d4c3.tar.zst mailman-b0e36af9d28404a54e435d9427ddffb8c7b6d4c3.zip | |
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman/utilities/importer.py | 15 | ||||
| -rw-r--r-- | src/mailman/utilities/tests/test_import.py | 27 |
2 files changed, 39 insertions, 3 deletions
diff --git a/src/mailman/utilities/importer.py b/src/mailman/utilities/importer.py index 31abbe38e..85eb951af 100644 --- a/src/mailman/utilities/importer.py +++ b/src/mailman/utilities/importer.py @@ -399,12 +399,20 @@ def import_config_pck(mlist, config_dict): MemberRole.owner) import_roster(mlist, config_dict, config_dict.get('moderator', []), MemberRole.moderator) + import_roster(mlist, config_dict, config_dict.get('accept_these_nonmembers', []), + MemberRole.nonmember, Action.accept) + import_roster(mlist, config_dict, config_dict.get('hold_these_nonmembers', []), + MemberRole.nonmember, Action.hold) + import_roster(mlist, config_dict, config_dict.get('reject_these_nonmembers', []), + MemberRole.nonmember, Action.reject) + import_roster(mlist, config_dict, config_dict.get('discard_these_nonmembers', []), + MemberRole.nonmember, Action.discard) finally: mlist.send_welcome_message = send_welcome_message -def import_roster(mlist, config_dict, members, role): +def import_roster(mlist, config_dict, members, role, action=None): """Import members lists from a config.pck configuration dictionary. :param mlist: The mailing list. @@ -447,8 +455,7 @@ def import_roster(mlist, config_dict, members, role): address = usermanager.create_address(original_email) address.verified_on = datetime.datetime.now() user.link(address) - mlist.subscribe(address, role) - member = roster.get_member(email) + member = mlist.subscribe(address, role) assert member is not None prefs = config_dict.get('user_options', {}).get(email, 0) if email in config_dict.get('members', {}): @@ -488,6 +495,8 @@ def import_roster(mlist, config_dict, members, role): elif oldds == 4: member.preferences.delivery_status = DeliveryStatus.by_bounces # Moderation. + if action is not None: + member.moderation_action = action if prefs & 128: member.moderation_action = Action.hold # Other preferences. diff --git a/src/mailman/utilities/tests/test_import.py b/src/mailman/utilities/tests/test_import.py index aa2888af6..13c23b32c 100644 --- a/src/mailman/utilities/tests/test_import.py +++ b/src/mailman/utilities/tests/test_import.py @@ -648,6 +648,18 @@ class TestRosterImport(unittest.TestCase): 'bob@example.com', 'fred@example.com', ], + 'accept_these_nonmembers': [ + 'gene@example.com', + ], + 'hold_these_nonmembers': [ + 'homer@example.com', + ], + 'reject_these_nonmembers': [ + 'iris@example.com', + ], + 'discard_these_nonmembers': [ + 'kenny@example.com', + ], } self._usermanager = getUtility(IUserManager) language_manager = getUtility(ILanguageManager) @@ -831,6 +843,21 @@ class TestRosterImport(unittest.TestCase): queue, file_count)) self.assertTrue(self._mlist.send_welcome_message) + def test_nonmembers(self): + import_config_pck(self._mlist, self._pckdict) + expected = {"gene": Action.accept, + "homer": Action.hold, + "iris": Action.reject, + "kenny": Action.discard, + } + for name, action in expected.items(): + self.assertIn('{}@example.com'.format(name), + [a.email for a in self._mlist.nonmembers.addresses], + 'Address {} was not imported'.format(name)) + member = self._mlist.nonmembers.get_member( + '{}@example.com'.format(name)) + self.assertEqual(member.moderation_action, action) + class TestPreferencesImport(unittest.TestCase): |
