summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBarry Warsaw2016-10-25 21:18:44 -0400
committerBarry Warsaw2016-10-25 21:18:44 -0400
commit314f6002955b9b3f94ec00774aa230f5dd1f9374 (patch)
treead3ad14189820774c028ad90fbf2770e93e27d30 /src
parent686e01c717f69fb3ab7918dc933c03cf563258e7 (diff)
downloadmailman-314f6002955b9b3f94ec00774aa230f5dd1f9374.tar.gz
mailman-314f6002955b9b3f94ec00774aa230f5dd1f9374.tar.zst
mailman-314f6002955b9b3f94ec00774aa230f5dd1f9374.zip
Diffstat (limited to 'src')
-rw-r--r--src/mailman/docs/NEWS.rst1
-rw-r--r--src/mailman/interfaces/bans.py2
-rw-r--r--src/mailman/interfaces/subscriptions.py4
-rw-r--r--src/mailman/model/tests/test_bans.py19
4 files changed, 16 insertions, 10 deletions
diff --git a/src/mailman/docs/NEWS.rst b/src/mailman/docs/NEWS.rst
index d0d125733..bc57591b3 100644
--- a/src/mailman/docs/NEWS.rst
+++ b/src/mailman/docs/NEWS.rst
@@ -227,6 +227,7 @@ REST
string in the REST API. Given by Aurélien Bompard.
* A list's ``moderator_password`` can be set via the REST API. Given by
Andrew Breksa. (Closes #207)
+ * Banned addresses can now be paginated. Given by Amit. (Closes #284)
Other
-----
diff --git a/src/mailman/interfaces/bans.py b/src/mailman/interfaces/bans.py
index 72ee525d1..055ad69a3 100644
--- a/src/mailman/interfaces/bans.py
+++ b/src/mailman/interfaces/bans.py
@@ -47,7 +47,7 @@ class IBanManager(Interface):
"""
bans = Attribute(
- """A `QuerySequence` over all the banned emails""")
+ """A `QuerySequence` over all the banned emails.""")
def ban(email):
"""Ban an email address from subscribing to a mailing list.
diff --git a/src/mailman/interfaces/subscriptions.py b/src/mailman/interfaces/subscriptions.py
index e707cf706..284261de5 100644
--- a/src/mailman/interfaces/subscriptions.py
+++ b/src/mailman/interfaces/subscriptions.py
@@ -148,8 +148,8 @@ class ISubscriptionService(Interface):
:type list_id: string
:param role: The member role.
:type role: `MemberRole`
- :return: The list of all memberships, which may be empty.
- :rtype: list of `IMember`
+ :return: A sequence of all memberships, which may be empty.
+ :rtype: A `QuerySequence` of `IMember`
"""
def find_member(subscriber=None, list_id=None, role=None):
diff --git a/src/mailman/model/tests/test_bans.py b/src/mailman/model/tests/test_bans.py
index d0b6dc995..c993a2043 100644
--- a/src/mailman/model/tests/test_bans.py
+++ b/src/mailman/model/tests/test_bans.py
@@ -23,7 +23,6 @@ from mailman.app.lifecycle import create_list
from mailman.interfaces.bans import IBanManager
from mailman.interfaces.listmanager import IListManager
from mailman.testing.layers import ConfigLayer
-from mailman.utilities.queries import QuerySequence
from zope.component import getUtility
@@ -48,10 +47,16 @@ class TestMailingListBans(unittest.TestCase):
self.assertEqual([ban.email for ban in global_ban_manager],
['bart@example.com'])
- def test_bans_querysequence(self):
- # Bans returns a `QuerySequence`.
+ def test_bans_sequence(self):
+ # Bans returns a pageable sequence.
self._manager.ban('bee@example.com')
- self.assertEqual(len(self._manager.bans), 1)
- ban = self._manager.bans[0]
- self.assertEqual(ban.email, 'bee@example.com')
- self.assertIsInstance(self._manager.bans, QuerySequence)
+ self._manager.ban('ant@example.com')
+ # The results can be len()'d.
+ self.assertEqual(len(self._manager.bans), 2)
+ # The results can be iterated.
+ self.assertEqual(['ant@example.com', 'bee@example.com'],
+ sorted(ban.email for ban in self._manager.bans))
+ # The results can be indexed.
+ self.assertEqual(
+ sorted([self._manager.bans[0].email, self._manager.bans[1].email]),
+ ['ant@example.com', 'bee@example.com'])