Abhilash Raj pushed to branch master at GNU Mailman / Mailman Core
Commits:
caf12d10 by Mark Sapiro at 2019-06-18T13:56:03Z
Fix utilities/importer.py to import MM 2.1's private_archive setting.
Also reverts a change to tox.ini that causes the test suite to run twice
for cov and diffcov.
- - - - -
39bce856 by Abhilash Raj at 2019-06-18T13:56:04Z
Merge branch 'fix_607' into 'master'
Fix utilities/importer.py to import MM 2.1's private_archive setting.
Closes #607
See merge request mailman/mailman!527
- - - - -
4 changed files:
- src/mailman/docs/NEWS.rst
- src/mailman/utilities/importer.py
- src/mailman/utilities/tests/test_import.py
- tox.ini
Changes:
=====================================
src/mailman/docs/NEWS.rst
=====================================
@@ -39,7 +39,7 @@ Command line
* The ``mailman import21`` command now imports nonmember accept actions as
``Action.defer`` rather than ``Action.accept``. (Closes #579)
* The ``mailman import21`` command now correctly imports ``*_these_nonmembers``
- actions for nonmembers following a member in the list. (closes #580)
+ actions for nonmembers following a member in the list. (Closes #580)
* The progress meter while ``mailman import21`` is importing rosters has been
shortened so it no longer wraps and scrolls. (Closes #589)
* The ``mailman import21`` command no longer sends an email to existing owners
@@ -47,6 +47,8 @@ Command line
* A ``mailman notify`` command has been implemented to be run by cron to send
periodic notices of held requests to list owners and moderators.
(Closes #258)
+* The ``mailman import21`` command now imports ``private_roster``.
+ (Closes #607)
REST
----
=====================================
src/mailman/utilities/importer.py
=====================================
@@ -43,6 +43,7 @@ from mailman.interfaces.member import DeliveryMode,
DeliveryStatus, MemberRole
from mailman.interfaces.nntp import NewsgroupModeration
from mailman.interfaces.template import ITemplateLoader, ITemplateManager
from mailman.interfaces.usermanager import IUserManager
+from mailman.model.roster import RosterVisibility
from mailman.utilities.filesystem import makedirs
from mailman.utilities.i18n import search
from public import public
@@ -144,6 +145,17 @@ def nonmember_action_mapping(value):
}[value]
+def member_roster_visibility_mapping(value):
+ # For member_roster_visibility, which used to be called private_roster.
+ # The values were: 0==public, 1==members, 2==admins.
+ mapping = {
+ 0: RosterVisibility.public,
+ 1: RosterVisibility.members,
+ 2: RosterVisibility.moderators,
+ }
+ return mapping.get(value, None)
+
+
def action_to_chain(value):
# Converts an action number in Mailman 2.1 to the name of the corresponding
# chain in 3.x. The actions 'approve', 'subscribe' and 'unsubscribe' are
@@ -368,6 +380,11 @@ def import_config_pck(mlist, config_dict):
# but .add() would not raise ValueError if address contained '@' and
# that needs the '^' too as it could be a regexp with an '@' in it.
alias_set.add(address)
+ # Handle roster visibility.
+ mapping = member_roster_visibility_mapping(
+ config_dict.get('private_roster', None))
+ if mapping is not None:
+ mlist.member_roster_visibility = mapping
# Handle header_filter_rules conversion to header_matches.
header_matches = IHeaderMatchList(mlist)
header_filter_rules = config_dict.get('header_filter_rules', [])
=====================================
src/mailman/utilities/tests/test_import.py
=====================================
@@ -40,6 +40,7 @@ from mailman.interfaces.member import DeliveryMode,
DeliveryStatus
from mailman.interfaces.nntp import NewsgroupModeration
from mailman.interfaces.template import ITemplateLoader, ITemplateManager
from mailman.interfaces.usermanager import IUserManager
+from mailman.model.roster import RosterVisibility
from mailman.testing.helpers import LogFileMark
from mailman.testing.layers import ConfigLayer
from mailman.utilities.filesystem import makedirs
@@ -1175,6 +1176,38 @@ class TestRosterImport(unittest.TestCase):
self.assertEqual(member.moderation_action, Action.hold)
+class TestRosterVisibilityImport(unittest.TestCase):
+ """Test that member_roster_visibility is imported correctly.
+
+ Mailman 2.1 lists have a private_roster attribute to control roster
+ visibility with values 0==public, 1==members, 2==admins
+ These correspond to the Mailman 3 member_roster_visibility values
+ RosterVisibility.public, RosterVisibility.members and
+ RosterVisibility.moderators
+ """
+ layer = ConfigLayer
+
+ def setUp(self):
+ self._mlist = create_list('[email protected]')
+ self._mlist.member_roster_visibility = DummyEnum.val
+
+ def _do_test(self, original, expected):
+ import_config_pck(self._mlist, dict(private_roster=original))
+ self.assertEqual(self._mlist.member_roster_visibility, expected)
+
+ def test_roster_visibility_public(self):
+ self._do_test(0, RosterVisibility.public)
+
+ def test_roster_visibility_members(self):
+ self._do_test(1, RosterVisibility.members)
+
+ def test_roster_visibility_moderators(self):
+ self._do_test(2, RosterVisibility.moderators)
+
+ def test_roster_visibility_bad(self):
+ self._do_test(3, DummyEnum.val)
+
+
class TestPreferencesImport(unittest.TestCase):
"""Preferences get imported too."""
=====================================
tox.ini
=====================================
@@ -5,7 +5,7 @@ skip_missing_interpreters = True
[testenv]
commands =
- python -m nose2 -v {posargs}
+ nocov: python -m nose2 -v {posargs}
cov,diffcov: python -m coverage run {[coverage]rc} -m nose2 {posargs}
cov,diffcov: python -m coverage combine {[coverage]rc}
cov: python -m coverage html {[coverage]rc}
View it on GitLab:
https://gitlab.com/mailman/mailman/compare/a02c52038d7de00287b8bd5acdd91f8f61f28034...39bce856139295f269e4110f4aadbdf7c089c058
--
View it on GitLab:
https://gitlab.com/mailman/mailman/compare/a02c52038d7de00287b8bd5acdd91f8f61f28034...39bce856139295f269e4110f4aadbdf7c089c058
You're receiving this email because of your account on gitlab.com.
_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe:
https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org