def get_page(cls, query=None, cursor=None, sort=None, amount=50): c = None if cursor: c = Cursor.from_websafe_string(cursor) if not query: query = cls.query() if sort: query = query.order(cls.generate_order_from_string(sort)) data, next_cursor, more = query.fetch_page(amount, start_cursor=c) data = {cls._get_kind(): data} if more: data["cursor"] = next_cursor.to_websafe_string() return data
def get_results_with_cursors(self, query, reverse_query, size): cursor = self.request.get('cursor', None) if cursor: try: cursor = Cursor.from_websafe_string(cursor) except: cursor = None next_cursor = previous_cursor = None if cursor is not None: reverse_cursor = cursor.reversed() reverse_results, reverse_next_cursor, reverse_more = reverse_query.fetch_page( size, start_cursor=reverse_cursor ) if reverse_more: previous_cursor = reverse_next_cursor.reversed() previous_cursor = previous_cursor.to_websafe_string() else: previous_cursor = 'START' results, next_cursor, more = query.fetch_page(size, start_cursor=cursor) if more: next_cursor = next_cursor.to_websafe_string() else: next_cursor = None return results, previous_cursor, next_cursor