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): ['b...@example.com']) def test_bans_sequence(self): - # Bans returns a pageable sequence. + # Bans returns a pageable sorted sequence. self._manager.ban('b...@example.com') self._manager.ban('a...@example.com') + self._manager.ban('c...@example.com') # 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(['a...@example.com', 'b...@example.com'], - sorted(ban.email for ban in self._manager.bans)) + self.assertEqual( + ['a...@example.com', 'b...@example.com', 'c...@example.com'], + [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]), - ['a...@example.com', 'b...@example.com']) + [self._manager.bans[i].email for i in range(count)], + ['a...@example.com', 'b...@example.com', 'c...@example.com']) View it on GitLab: https://gitlab.com/mailman/mailman/compare/71109df183538fc987cae3eb3f9830531533eaa1...d2f59ff1d0d2b30763529543a68b0a4fdb9e28c6
_______________________________________________ Mailman-checkins mailing list Mailman-checkins@python.org Unsubscribe: https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org