Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core
Commits: be18a1f5 by Mark Sapiro at 2021-07-28T18:00:45-07:00 Catch SubscriptionPendingError in mailman syncmembers. - - - - - cf58b209 by Mark Sapiro at 2021-07-29T01:30:56+00:00 Merge branch 'sync' into 'master' Catch SubscriptionPendingError in mailman syncmembers. Closes #929 See merge request mailman/mailman!899 - - - - - 3 changed files: - src/mailman/commands/cli_syncmembers.py - src/mailman/commands/tests/test_cli_syncmembers.py - src/mailman/docs/NEWS.rst Changes: ===================================== src/mailman/commands/cli_syncmembers.py ===================================== @@ -29,7 +29,8 @@ from mailman.interfaces.command import ICLISubCommand from mailman.interfaces.listmanager import IListManager from mailman.interfaces.member import ( DeliveryMode, DeliveryStatus, MembershipIsBannedError) -from mailman.interfaces.subscriptions import ISubscriptionManager +from mailman.interfaces.subscriptions import ( + ISubscriptionManager, SubscriptionPendingError) from mailman.interfaces.usermanager import IUserManager from mailman.utilities.options import I18nCommand from public import public @@ -80,6 +81,9 @@ def add_members(mlist, member, delivery, welcome_msg): except MembershipIsBannedError: print(_('Membership is banned (skipping): $email'), file=sys.stderr) + except SubscriptionPendingError: + print(_('Subscription already pending (skipping): $email'), + file=sys.stderr) @transactional ===================================== src/mailman/commands/tests/test_cli_syncmembers.py ===================================== @@ -23,7 +23,9 @@ from click.testing import CliRunner from mailman.app.lifecycle import create_list from mailman.commands.cli_syncmembers import syncmembers from mailman.interfaces.bans import IBanManager +from mailman.interfaces.mailinglist import SubscriptionPolicy from mailman.interfaces.member import DeliveryMode, DeliveryStatus, MemberRole +from mailman.interfaces.subscriptions import ISubscriptionManager from mailman.interfaces.usermanager import IUserManager from mailman.testing.helpers import get_queue_messages, subscribe from mailman.testing.layers import ConfigLayer @@ -114,6 +116,28 @@ class TestCLISyncMembers(unittest.TestCase): ) self.assertEqual(len(list(self._mlist.members.members)), 0) + def test_subscription_pending(self): + # Pend a subscription for Anne. + self._mlist.subscription_policy = SubscriptionPolicy.confirm + address = getUtility(IUserManager).create_address( + 'aper...@example.com', 'Anne Person') + ISubscriptionManager(self._mlist).register(address) + with NamedTemporaryFile('w', buffering=1, encoding='utf-8') as infp: + print('Anne Person <aper...@example.com>', file=infp) + print('Bart Person <bper...@example.com>', file=infp) + result = self._command.invoke(syncmembers, ( + infp.name, 'ant.example.com')) + self.assertEqual(result.output, + '[ADD] Anne Person' + ' <aper...@example.com>\n' + 'Subscription already pending (skipping): ' + 'Anne Person <aper...@example.com>\n' + '[ADD] Bart Person' + ' <bper...@example.com>\n') + members = list(self._mlist.members.members) + self.assertEqual(len(members), 1) + self.assertEqual(members[0].address.email, 'bper...@example.com') + def test_sync_commented_lines(self): subscribe(self._mlist, 'Anne') subscribe(self._mlist, 'Bart') ===================================== src/mailman/docs/NEWS.rst ===================================== @@ -94,6 +94,8 @@ Bugs * The tagger handler now stringifies any Header instances. (Closes #928) * Invitation and (un)subscription confirmation subjects are now translated to the list's preferred language. (Closes #930) +* The ``mailman syncmembers`` command now catches and reports a + ``SubscriptionPendingError``. (Closes #929) Command line ------------ View it on GitLab: https://gitlab.com/mailman/mailman/-/compare/1fadf21305920a647c6e552e43449ae4b948bf89...cf58b209170f57377d51bfbf877a11ab017520d8 -- View it on GitLab: https://gitlab.com/mailman/mailman/-/compare/1fadf21305920a647c6e552e43449ae4b948bf89...cf58b209170f57377d51bfbf877a11ab017520d8 You're receiving this email because of your account on gitlab.com.
_______________________________________________ Mailman-checkins mailing list -- mailman-checkins@python.org To unsubscribe send an email to mailman-checkins-le...@python.org https://mail.python.org/mailman3/lists/mailman-checkins.python.org/ Member address: arch...@jab.org