Barry Warsaw pushed to branch master at mailman / Mailman
Commits:
d33516cd by Aurélien Bompard at 2016-10-26T20:12:16-04:00
Sort the ban list by email
- - - - -
d2f59ff1 by Barry Warsaw at 2016-10-26T20:18:42-04:00
News and test tweak.
- - - - -
3 changed files:
- src/mailman/docs/NEWS.rst
- src/mailman/model/bans.py
- src/mailman/model/tests/test_bans.py
Changes:
=====================================
src/mailman/docs/NEWS.rst
=====================================
--- a/src/mailman/docs/NEWS.rst
+++ b/src/mailman/docs/NEWS.rst
@@ -227,7 +227,8 @@ 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)
+ * The ban manager now returns a pageable, sorted sequence. Given by Amit and
+ Aurélien Bompard. (Closes #284)
* Query parameters now allow you to filter mailing lists by the
``advertised`` boolean parameter. Given by Aurélien Bompard.
=====================================
src/mailman/model/bans.py
=====================================
--- a/src/mailman/model/bans.py
+++ b/src/mailman/model/bans.py
@@ -114,7 +114,8 @@ class BanManager:
@dbconnection
def bans(self, store):
"""See `IBanManager`."""
- query = store.query(Ban).filter_by(list_id=self._list_id)
+ query = store.query(Ban).filter_by(
+ list_id=self._list_id).order_by(Ban.email)
return QuerySequence(query)
@dbconnection
=====================================
src/mailman/model/tests/test_bans.py
=====================================
--- a/src/mailman/model/tests/test_bans.py
+++ b/src/mailman/model/tests/test_bans.py
@@ -48,15 +48,18 @@ class TestMailingListBans(unittest.TestCase):
['[email protected]'])
def test_bans_sequence(self):
- # Bans returns a pageable sequence.
+ # Bans returns a pageable sorted sequence.
self._manager.ban('[email protected]')
self._manager.ban('[email protected]')
+ self._manager.ban('[email protected]')
# The results can be len()'d.
- self.assertEqual(len(self._manager.bans), 2)
+ count = len(self._manager.bans)
+ self.assertEqual(count, 3)
# The results can be iterated.
- self.assertEqual(['[email protected]', '[email protected]'],
- sorted(ban.email for ban in self._manager.bans))
+ self.assertEqual(
+ ['[email protected]', '[email protected]', '[email protected]'],
+ [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]),
- ['[email protected]', '[email protected]'])
+ [self._manager.bans[i].email for i in range(count)],
+ ['[email protected]', '[email protected]', '[email protected]'])
View it on GitLab:
https://gitlab.com/mailman/mailman/compare/71109df183538fc987cae3eb3f9830531533eaa1...d2f59ff1d0d2b30763529543a68b0a4fdb9e28c6
_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe:
https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org