diff options
-rw-r--r-- | .gitignore | 5 | ||||
-rw-r--r-- | sugar_network/client.py | 16 | ||||
l--------- | sugar_network/sweets/lib/zeroinstall | 1 |
3 files changed, 13 insertions, 9 deletions
@@ -1,9 +1,4 @@ .* *.tar.* doc/build -active_document -restful_document -sugar_network_server -sugar_stats_server tmp -sugar_network/sweets/lib/zeroinstall diff --git a/sugar_network/client.py b/sugar_network/client.py index e3bc5df..a705644 100644 --- a/sugar_network/client.py +++ b/sugar_network/client.py @@ -117,7 +117,10 @@ class Query(object): def __iter__(self): while self.offset + 1 < self.total: self.offset += 1 - yield self.get(self.offset) + obj = self.get(self.offset) + if obj is None: + break + yield obj def filter(self, query=None, **filters): """Change query parameters. @@ -149,11 +152,16 @@ class Query(object): (offset >= self._total): return default page = offset / _PAGE_SIZE + offset -= page * _PAGE_SIZE if page not in self._pages: self._fetch_page(page) - if offset >= self._total: - return default - return self._pages[page][offset - page * _PAGE_SIZE] + if offset >= len(self._pages[page]): + total = page + len(self._pages[page]) + _logger.warning('Miscalculated total number, %s instead of %s', + total, self._total) + self._total = total + return default + return self._pages[page][offset] def __getitem__(self, offset): """Get object by offset. diff --git a/sugar_network/sweets/lib/zeroinstall b/sugar_network/sweets/lib/zeroinstall new file mode 120000 index 0000000..b434384 --- /dev/null +++ b/sugar_network/sweets/lib/zeroinstall @@ -0,0 +1 @@ +zeroinstall-injector/zeroinstall/
\ No newline at end of file |