summaryrefslogtreecommitdiff
path: root/src/mailman/utilities
diff options
context:
space:
mode:
authorAurélien Bompard2015-06-15 20:12:55 +0200
committerAurélien Bompard2015-06-17 08:24:22 +0200
commit1e20893957cb7124567d26779db681cf10a91d0e (patch)
tree41af24329564453ba8bf5e00afa1a8c5632b1e46 /src/mailman/utilities
parente9921ece080fccac249bebfeee1348b450202975 (diff)
downloadmailman-1e20893957cb7124567d26779db681cf10a91d0e.tar.gz
mailman-1e20893957cb7124567d26779db681cf10a91d0e.tar.zst
mailman-1e20893957cb7124567d26779db681cf10a91d0e.zip
Diffstat (limited to 'src/mailman/utilities')
-rw-r--r--src/mailman/utilities/importer.py34
-rw-r--r--src/mailman/utilities/tests/test_import.py11
2 files changed, 28 insertions, 17 deletions
diff --git a/src/mailman/utilities/importer.py b/src/mailman/utilities/importer.py
index b55d8c38d..31abbe38e 100644
--- a/src/mailman/utilities/importer.py
+++ b/src/mailman/utilities/importer.py
@@ -103,21 +103,6 @@ def filter_action_mapping(value):
}[value]
-
-def member_action_mapping(value):
- # The mlist.default_member_action and mlist.default_nonmember_action enum
- # values are different in Mailman 2.1, because they have been merged into
- # a single enum in Mailman 3.
- #
- # For default_member_action, which used to be called
- # member_moderation_action, the values were: 0==Hold, 1=Reject, 2==Discard
- return {
- 0: Action.hold,
- 1: Action.reject,
- 2: Action.discard,
- }[value]
-
-
def nonmember_action_mapping(value):
# For default_nonmember_action, which used to be called
# generic_nonmember_action, the values were: 0==Accept, 1==Hold,
@@ -161,7 +146,6 @@ TYPES = dict(
autoresponse_grace_period=days_to_delta,
bounce_info_stale_after=seconds_to_delta,
bounce_you_are_disabled_warnings_interval=seconds_to_delta,
- default_member_action=member_action_mapping,
default_nonmember_action=nonmember_action_mapping,
digest_volume_frequency=DigestFrequency,
filter_action=filter_action_mapping,
@@ -190,7 +174,6 @@ NAME_MAPPINGS = dict(
filter_mime_types='filter_types',
generic_nonmember_action='default_nonmember_action',
include_list_post_header='allow_list_posts',
- member_moderation_action='default_member_action',
mod_password='moderator_password',
news_moderation='newsgroup_moderation',
news_prefix_subject_too='nntp_prefix_subject_too',
@@ -268,6 +251,23 @@ def import_config_pck(mlist, config_dict):
setattr(mlist, 'last_post_at', value)
continue
setattr(mlist, key, value)
+ # Handle the moderation policy.
+ # The mlist.default_member_action and mlist.default_nonmember_action enum
+ # values are different in Mailman 2.1, because they have been merged into
+ # a single enum in Mailman 3.
+ # Unmoderated lists used to have default_member_moderation set to a false
+ # value, this translates to the Defer default action. Moderated lists with
+ # the default_member_moderation set to a true value used to store the
+ # action in the member_moderation_action flag, the values were: 0==Hold,
+ # 1=Reject, 2==Discard
+ if bool(config_dict.get("default_member_moderation", 0)):
+ mlist.default_member_action = {
+ 0: Action.hold,
+ 1: Action.reject,
+ 2: Action.discard,
+ }[config_dict.get("member_moderation_action")]
+ else:
+ mlist.default_member_action = Action.defer
# Handle the archiving policy. In MM2.1 there were two boolean options
# but only three of the four possible states were valid. Now there's just
# an enum.
diff --git a/src/mailman/utilities/tests/test_import.py b/src/mailman/utilities/tests/test_import.py
index 9f3d59d5a..aa2888af6 100644
--- a/src/mailman/utilities/tests/test_import.py
+++ b/src/mailman/utilities/tests/test_import.py
@@ -444,15 +444,26 @@ class TestMemberActionImport(unittest.TestCase):
for key, value in expected.items():
self.assertEqual(getattr(self._mlist, key), value)
+ def test_member_defer(self):
+ # if default_member_moderation is not set, the member_moderation_action
+ # value is meaningless
+ self._pckdict['default_member_moderation'] = 0
+ for mmaval in range(3):
+ self._pckdict['member_moderation_action'] = mmaval
+ self._do_test(dict(default_member_action=Action.defer))
+
def test_member_hold(self):
+ self._pckdict['default_member_moderation'] = 1
self._pckdict['member_moderation_action'] = 0
self._do_test(dict(default_member_action=Action.hold))
def test_member_reject(self):
+ self._pckdict['default_member_moderation'] = 1
self._pckdict['member_moderation_action'] = 1
self._do_test(dict(default_member_action=Action.reject))
def test_member_discard(self):
+ self._pckdict['default_member_moderation'] = 1
self._pckdict['member_moderation_action'] = 2
self._do_test(dict(default_member_action=Action.discard))