コード例 #1
0
ファイル: db.py プロジェクト: phiiil/veosan
def fetch_page_of_provider_prospects(cursor_key=None,
                                     page_size=50,
                                     search_keyword=None):
    ''' 
        Returns three values: prospects, next_curs, prev_curs
        
        Search uses a workaround to imitate LIKE:
        http://stackoverflow.com/questions/47786/google-app-engine-is-it-possible-to-do-a-gql-like-query
    
    '''
    cursor = Cursor(urlsafe=cursor_key)
    if search_keyword:
        limit = search_keyword + u"\ufffd"
        query = ProviderProspect.query(
            ProviderProspect.last_name >= search_keyword,
            ProviderProspect.last_name < limit)

        query = query.order(ProviderProspect.last_name)
    else:
        query = ProviderProspect.query()
    # forward and back
    forward_query = query.order(ProviderProspect.category,
                                ProviderProspect.last_name,
                                ProviderProspect.key)
    backward_query = query.order(-ProviderProspect.category,
                                 -ProviderProspect.last_name,
                                 -ProviderProspect.key)
    # fetch next
    prospects, next_curs, more = forward_query.fetch_page(page_size,
                                                          start_cursor=cursor)
    logging.info('next_curs: %s  more: %s' % (next_curs, more))
    # fetch prev (just to get cursor position)
    if cursor_key:
        reversed_cursor = cursor.reversed()
        prev_prospects, prev_curs, prev_more = backward_query.fetch_page(
            page_size, start_cursor=reversed_cursor)
        # reverse the cursor (GAE docs is wrong on this)
        if prev_curs:
            prev_curs = prev_curs.reversed()
    else:
        prev_curs = None
        prev_more = None

    if not more:
        next_curs = None

    #if not prev_more:
    #    prev_curs = None
    return prospects, next_curs, prev_curs
コード例 #2
0
ファイル: gaeutil.py プロジェクト: priscilamelosilva/Membros
 def __init__(self,
              query,
              page_size=100,
              start_cursor=None,
              offset=0,
              use_cache=True,
              cache_begin=True,
              **kwargs):
     self.cache_begin = cache_begin
     self.use_cache = use_cache
     self.page_size = page_size
     self.query = query
     self.offset = offset
     self.__future = None
     self.__cached_keys = None
     self.cursor = None
     self.more = None
     if isinstance(start_cursor, basestring):
         start_cursor = Cursor(urlsafe=start_cursor)
     self.start_cursor = start_cursor
     super(ModelSearchCommand, self).__init__(**kwargs)