app/soc/logic/models/base.py
changeset 2980 cbfd8e12527a
parent 2968 7ba28890eb75
child 2989 4ab340430bfa
--- a/app/soc/logic/models/base.py	Sun Sep 27 01:23:58 2009 +0530
+++ b/app/soc/logic/models/base.py	Sun Sep 27 23:31:39 2009 +0200
@@ -586,8 +586,36 @@
       offset = offset + chunk
 
     return result
+
+  def getBatchOfData(self, filter=None, order=None, next_key=None):
+    """Returns one batch of entities
+
+    Args:
+      filter: a dict for the properties that the entities should have
+      order: a list with the sort order
+      next_key: a key for the first entity that should be returned
+
+    Returns:
+      A tuple: list of fetched entities and key value for the entity
+      that should be fetched at first for the next batch
+    """
+
+    query = self.getQueryForFields(filter=filter, order=order)
+
+    if next_key is not None:
+      query.filter('__key__ >=', next_key)
+
+    entities = query.fetch(self.BATCH_SIZE + 1)
+
+    next_key = None
+    if len(entities) == self.BATCH_SIZE + 1:
+      next_entity = entities.pop()
+      next_key = next_entity.key()
+
+    return entities, next_key
+
   # pylint: disable-msg=C0103
-  def entityIterator(self, queryGen, batch_size = 100):
+  def entityIterator(self, queryGen, batch_size=100):
     """Iterator that yields an entity in batches.
 
     Args: