summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mailman/interfaces/bans.py7
-rw-r--r--src/mailman/model/bans.py7
-rw-r--r--src/mailman/rest/bans.py2
3 files changed, 15 insertions, 1 deletions
diff --git a/src/mailman/interfaces/bans.py b/src/mailman/interfaces/bans.py
index 2e320965a..3401f286e 100644
--- a/src/mailman/interfaces/bans.py
+++ b/src/mailman/interfaces/bans.py
@@ -93,6 +93,13 @@ class IBanManager(Interface):
:rtype: bool
"""
+ def find():
+ """Return the sequence of baned emails
+
+ :return: The list of all banned addresses.
+ :rtype: list of `IBan`
+ """
+
def __iter__():
"""Iterate over all banned addresses.
diff --git a/src/mailman/model/bans.py b/src/mailman/model/bans.py
index e2b6490eb..5b86c93ec 100644
--- a/src/mailman/model/bans.py
+++ b/src/mailman/model/bans.py
@@ -24,6 +24,7 @@ from mailman.database.model import Model
from mailman.database.transaction import dbconnection
from mailman.database.types import SAUnicode
from mailman.interfaces.bans import IBan, IBanManager
+from mailman.utilities.queries import QuerySequence
from sqlalchemy import Column, Integer
from zope.interface import implementer
@@ -110,6 +111,12 @@ class BanManager:
return False
@dbconnection
+ def find(self, store):
+ """See `IBanManager`."""
+ query = store.query(Ban).filter_by(list_id=self._list_id)
+ return QuerySequence(query)
+
+ @dbconnection
def __iter__(self, store):
"""See `IBanManager`."""
yield from store.query(Ban).filter_by(list_id=self._list_id)
diff --git a/src/mailman/rest/bans.py b/src/mailman/rest/bans.py
index ccd88d9b4..5cb9d51d5 100644
--- a/src/mailman/rest/bans.py
+++ b/src/mailman/rest/bans.py
@@ -86,7 +86,7 @@ class BannedEmails(_BannedBase, CollectionMixin):
def _get_collection(self, request):
"""See `CollectionMixin`."""
- return list(self.ban_manager)
+ return self.ban_manager.find()
def on_get(self, request, response):
"""/bans"""