summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAurélien Bompard2015-06-16 01:43:02 +0200
committerAurélien Bompard2015-06-17 08:24:22 +0200
commit92028c599d76bd8e5c17557464e13c352a8af0f8 (patch)
treed4da096bce11f816eb8b897c2272e71659dbc10b /src
parentb0e36af9d28404a54e435d9427ddffb8c7b6d4c3 (diff)
downloadmailman-92028c599d76bd8e5c17557464e13c352a8af0f8.tar.gz
mailman-92028c599d76bd8e5c17557464e13c352a8af0f8.tar.zst
mailman-92028c599d76bd8e5c17557464e13c352a8af0f8.zip
Diffstat (limited to 'src')
-rw-r--r--src/mailman/utilities/importer.py20
-rw-r--r--src/mailman/utilities/tests/test_import.py9
2 files changed, 21 insertions, 8 deletions
diff --git a/src/mailman/utilities/importer.py b/src/mailman/utilities/importer.py
index 85eb951af..0d22ad2c5 100644
--- a/src/mailman/utilities/importer.py
+++ b/src/mailman/utilities/importer.py
@@ -399,14 +399,18 @@ 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)
+ # Now import the '*_these_nonmembers' properties, filtering out the
+ # regexps which will remain in the property
+ for action_name in ('accept', 'hold', 'reject', 'discard'):
+ prop_name = '{0}_these_nonmembers'.format(action_name)
+ emails = [ addr for addr in config_dict.get(prop_name, [])
+ if not addr.startswith('^') ]
+ import_roster(mlist, config_dict, emails, MemberRole.nonmember,
+ Action[action_name])
+ # Only keep the regexes in the legacy list property
+ list_prop = getattr(mlist, prop_name)
+ for email in emails:
+ list_prop.remove(email)
finally:
mlist.send_welcome_message = send_welcome_message
diff --git a/src/mailman/utilities/tests/test_import.py b/src/mailman/utilities/tests/test_import.py
index 13c23b32c..b2beb2f3f 100644
--- a/src/mailman/utilities/tests/test_import.py
+++ b/src/mailman/utilities/tests/test_import.py
@@ -650,15 +650,19 @@ class TestRosterImport(unittest.TestCase):
],
'accept_these_nonmembers': [
'gene@example.com',
+ '^gene-.*@example.com',
],
'hold_these_nonmembers': [
'homer@example.com',
+ '^homer-.*@example.com',
],
'reject_these_nonmembers': [
'iris@example.com',
+ '^iris-.*@example.com',
],
'discard_these_nonmembers': [
'kenny@example.com',
+ '^kenny-.*@example.com',
],
}
self._usermanager = getUtility(IUserManager)
@@ -857,6 +861,11 @@ class TestRosterImport(unittest.TestCase):
member = self._mlist.nonmembers.get_member(
'{}@example.com'.format(name))
self.assertEqual(member.moderation_action, action)
+ # Only regexps should remain in the list property
+ list_prop = getattr(self._mlist,
+ '{}_these_nonmembers'.format(action.name))
+ self.assertEqual(len(list_prop), 1)
+ self.assertTrue(all(addr.startswith('^') for addr in list_prop))