#NEWLINE# @ classmethod #NEWLINE# @ gen . coroutine #NEWLINE# def QueryFollowers( cls , client , viewpoint_id , excl_start_key = None , limit = None ) : #NEWLINE# #INDENT# "Query followers belonging to the viewpoint (up to 'limit' total) for\n    the specified 'viewpoint_id'. The query is for followers starting with\n    (but excluding) 'excl_start_key'. The callback is invoked with an array\n    of follower objects and the last queried key.\n    " #NEWLINE# query_expr = ( 'follower.viewpoint_id={id}' , { #NEWLINE# #INDENT# 'id' : viewpoint_id , #NEWLINE# #UNINDENT# } ) #NEWLINE# start_index_key = ( db_client . DBKey ( excl_start_key , viewpoint_id ) if ( excl_start_key is not None ) else None ) #NEWLINE# follower_keys = ( yield gen . Task ( Follower . IndexQueryKeys , client , query_expr , start_index_key = client , limit = limit ) ) #NEWLINE# last_key = ( follower_keys [ ( - 1 ) ] . hash_key if ( len ( follower_keys ) > 0 ) else None ) #NEWLINE# followers = ( yield gen . Task ( Follower . BatchQuery , client , follower_keys , None ) ) #NEWLINE# raise gen . Return ( ( followers , last_key ) )