Conditions | 6 |
Total Lines | 22 |
Code Lines | 17 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | from .query import Query |
||
41 | def __next__(self): |
||
42 | """ |
||
43 | Returns: |
||
44 | |||
45 | """ |
||
46 | # FIXME: This should be a local value with a find to ensure we get an accurate count |
||
47 | limit = self.collection.count() - self.offset |
||
48 | pages = limit // self.size |
||
49 | if self.current > pages: |
||
50 | raise StopIteration |
||
51 | page = self.collection |
||
52 | page = page.find() if not self.find else page.find(self.find) |
||
53 | if self.sort: |
||
54 | key, value = self.sort |
||
55 | page = page.sort(key, value) |
||
56 | page = page.limit(self.size) |
||
57 | if self.current > 0: |
||
58 | page = page.skip(self.offset + (self.current * self.size)) |
||
59 | elif self.offset > 0: |
||
60 | page = page.skip(self.offset) |
||
61 | self.current += 1 |
||
62 | return [self.objectify(document) for document in page] |
||
63 |