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

Reply via email to