From 1eec4bf88bb9bb1e6d393b5e80a58a929e6439b4 Mon Sep 17 00:00:00 2001 From: Amit Tripathi Date: Sun, 25 Sep 2016 22:37:44 +0530 Subject: Added QuerySequence as return type of banned address list --- src/mailman/interfaces/bans.py | 7 +++++++ src/mailman/model/bans.py | 7 +++++++ src/mailman/rest/bans.py | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src') 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 @@ -109,6 +110,12 @@ class BanManager: return True 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`.""" 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""" -- cgit v1.2.3-70-g09d2