Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core
Commits: a32ed9f4 by Mark Sapiro at 2020-12-18T10:07:14-08:00 Catch SubscriptionPendingError in mailman addmembers. - - - - - bbb0e944 by Mark Sapiro at 2020-12-18T18:32:19+00:00 Merge branch 'addmemb' into 'master' Catch SubscriptionPendingError in mailman addmembers. Closes #805 See merge request mailman/mailman!751 - - - - - 3 changed files: - src/mailman/commands/cli_addmembers.py - src/mailman/commands/tests/test_cli_addmembers.py - src/mailman/docs/NEWS.rst Changes: ===================================== src/mailman/commands/cli_addmembers.py ===================================== @@ -29,7 +29,8 @@ from mailman.interfaces.listmanager import IListManager from mailman.interfaces.member import ( AlreadySubscribedError, 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 @@ -99,6 +100,9 @@ def add_members(mlist, in_fp, delivery, invite, welcome_msg): except MembershipIsBannedError: print(_('Membership is banned (skipping): $email'), file=sys.stderr) + except SubscriptionPendingError: + print(_('Subscription already pending (skipping): $email'), + file=sys.stderr) @click.command( ===================================== src/mailman/commands/tests/test_cli_addmembers.py ===================================== @@ -24,7 +24,9 @@ from click.testing import CliRunner from mailman.app.lifecycle import create_list from mailman.commands.cli_addmembers import addmembers 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 @@ -82,6 +84,24 @@ class TestCLIAddMembers(unittest.TestCase): ) self.assertEqual(len(list(self._mlist.members.members)), 0) + def test_subscription_pending(self): + # Create an address. + address = getUtility(IUserManager).create_address( + 'aper...@example.com', 'Anne Person') + # Pend a subscription. + self._mlist.subscription_policy = SubscriptionPolicy.confirm + ISubscriptionManager(self._mlist).register(address) + with NamedTemporaryFile('w', buffering=1, encoding='utf-8') as infp: + print('Anne Person <aper...@example.com>', file=infp) + result = self._command.invoke(addmembers, ( + infp.name, 'ant.example.com')) + self.assertEqual( + result.output, + 'Subscription already pending (skipping): ' + 'Anne Person <aper...@example.com>\n' + ) + self.assertEqual(len(list(self._mlist.members.members)), 0) + def test_add_invalid_email(self): with NamedTemporaryFile('w', buffering=1, encoding='utf-8') as infp: print('foobar@', file=infp) ===================================== src/mailman/docs/NEWS.rst ===================================== @@ -30,6 +30,8 @@ Bugs * A bounce for a non-existent list is now handled. (Closes #799) * RFC 2047 From: headers in emailed ``join`` commands are now decoded. (Closes #802) +* The ``mailman addmembers`` command now catches and reports a + ``SubscriptionPendingError``. (Closes #805) New Features ------------ View it on GitLab: https://gitlab.com/mailman/mailman/-/compare/ca081d003d7166d6d4f71d3fcea3d10832b7b409...bbb0e94461d966b14f2e0b236944e28e7843b6dd -- View it on GitLab: https://gitlab.com/mailman/mailman/-/compare/ca081d003d7166d6d4f71d3fcea3d10832b7b409...bbb0e94461d966b14f2e0b236944e28e7843b6dd 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