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(
+ '[email protected]', 'Anne Person')
+ ISubscriptionManager(self._mlist).register(address)
+ with NamedTemporaryFile('w', buffering=1, encoding='utf-8') as infp:
+ print('Anne Person <[email protected]>', file=infp)
+ print('Bart Person <[email protected]>', file=infp)
+ result = self._command.invoke(syncmembers, (
+ infp.name, 'ant.example.com'))
+ self.assertEqual(result.output,
+ '[ADD] Anne Person'
+ ' <[email protected]>\n'
+ 'Subscription already pending (skipping): '
+ 'Anne Person <[email protected]>\n'
+ '[ADD] Bart Person'
+ ' <[email protected]>\n')
+ members = list(self._mlist.members.members)
+ self.assertEqual(len(members), 1)
+ self.assertEqual(members[0].address.email, '[email protected]')
+
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 -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/mailman-checkins.python.org/
Member address: [email protected]