From 79666070fa22a902184c110e2f4d8e1132a412f5 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Sun, 10 Jan 2016 20:55:27 -0500 Subject: Delegate more to the underlying query object and don't use a cached results. --- src/mailman/utilities/queries.py | 10 ++++++---- src/mailman/utilities/tests/test_queries.py | 4 ++++ 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/mailman/utilities/queries.py b/src/mailman/utilities/queries.py index fa8cb04aa..1a35e35fe 100644 --- a/src/mailman/utilities/queries.py +++ b/src/mailman/utilities/queries.py @@ -35,7 +35,6 @@ class QuerySequence(Sequence): def __init__(self, query=None): super().__init__() self._query = query - self._cached_results = None def __len__(self): return (0 if self._query is None else self._query.count()) @@ -43,6 +42,9 @@ class QuerySequence(Sequence): def __getitem__(self, index): if self._query is None: raise IndexError('index out of range') - if self._cached_results is None: - self._cached_results = list(self._query) - return self._cached_results[index] + return self._query[index] + + def __iter__(self): + if self._query is None: + return [] + yield from self._query diff --git a/src/mailman/utilities/tests/test_queries.py b/src/mailman/utilities/tests/test_queries.py index 6281a9f9b..39ab7de61 100644 --- a/src/mailman/utilities/tests/test_queries.py +++ b/src/mailman/utilities/tests/test_queries.py @@ -33,3 +33,7 @@ class TestQueries(unittest.TestCase): def test_index_error(self): query = QuerySequence(None) self.assertRaises(IndexError, getitem, query, 1) + + def test_iterate_with_none(self): + query = QuerySequence(None) + self.assertEqual(list(query), []) -- cgit v1.2.3-70-g09d2