From 86dd92c88edff6d59a08f4b955645795c15fa3df Mon Sep 17 00:00:00 2001 From: Jeremy Thurgood Date: Fri, 30 Jan 2015 21:29:04 +0200 Subject: [PATCH] The next_page() method on index pages now returns None if there is no next page. --- vumi/persist/riak_manager.py | 2 ++ vumi/persist/tests/test_model.py | 3 +++ vumi/persist/txriak_manager.py | 4 +++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/vumi/persist/riak_manager.py b/vumi/persist/riak_manager.py index 2b3a4335c..15bf6cbc8 100644 --- a/vumi/persist/riak_manager.py +++ b/vumi/persist/riak_manager.py @@ -62,6 +62,8 @@ def next_page(self): A new :class:`VumiIndexPage` object containing the next page of results. """ + if not self.has_next_page(): + return None try: result = self._index_page.next_page() except RiakError as e: diff --git a/vumi/persist/tests/test_model.py b/vumi/persist/tests/test_model.py index 2932e8748..ec3a9c502 100644 --- a/vumi/persist/tests/test_model.py +++ b/vumi/persist/tests/test_model.py @@ -727,6 +727,9 @@ def test_index_keys_page(self): self.assertEqual(sorted(keys3), []) self.assertEqual(keys3.has_next_page(), False) + no_keys = yield keys3.next_page() + self.assertEqual(no_keys, None) + @Manager.calls_manager def test_index_keys_page_explicit_continuation(self): indexed_model = self.manager.proxy(IndexedModel) diff --git a/vumi/persist/txriak_manager.py b/vumi/persist/txriak_manager.py index 66e730f89..3fac7848d 100644 --- a/vumi/persist/txriak_manager.py +++ b/vumi/persist/txriak_manager.py @@ -7,7 +7,7 @@ from riak import RiakClient, RiakObject, RiakMapReduce, RiakError from twisted.internet.threads import deferToThread from twisted.internet.defer import ( - inlineCallbacks, returnValue, gatherResults, maybeDeferred) + inlineCallbacks, returnValue, gatherResults, maybeDeferred, succeed) from vumi.persist.model import Manager, VumiRiakError @@ -69,6 +69,8 @@ def next_page(self): A new :class:`VumiTxIndexPage` object containing the next page of results. """ + if not self.has_next_page(): + return succeed(None) d = deferToThread(self._index_page.next_page) d.addCallback(type(self)) d.addErrback(riakErrorHandler)