diff options
| -rw-r--r-- | src/mailman/utilities/queries.py | 10 | ||||
| -rw-r--r-- | src/mailman/utilities/tests/test_queries.py | 4 |
2 files changed, 10 insertions, 4 deletions
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), []) |
