Ticket #1508: sort_ordering.patch

File sort_ordering.patch, 1.8 kB (added by roger.demetrescu, 1 year ago)
  • turbogears/paginate.py

    old new  
    322322def sort_ordering(ordering, sort_name): 
    323323    """Rearrange ordering based on sort_name.""" 
    324324    log.debug('sort called with %s and %s' % (ordering, sort_name)) 
    325     if sort_name not in ordering: 
    326         ordering[sort_name] = [-1, True] 
    327     if ordering[sort_name][0] == 0: 
     325    if ordering.setdefault(sort_name, [-1, True])[0] == 0: 
    328326        # Flip 
    329327        ordering[sort_name][1] = not ordering[sort_name][1] 
    330328    else: 
    331         ordering[sort_name][0] = 0 
    332         for key in ordering.keys(): 
    333             if key != sort_name and ordering[key][0] < len(ordering) - 1: 
    334                 ordering[key][0] += 1 
     329        ordering[sort_name][0] = -1 
     330     
     331    # re-sort dictionary 
     332    items = ordering.items() 
     333    items.sort(lambda x,y: cmp(x[1],y[1])) 
     334    for i,v in enumerate(items): 
     335        ordering[v[0]][0] = i 
     336 
    335337    log.debug('sort results is %s and %s' % (ordering, sort_name)) 
    336338 
    337339def sql_get_column(colname, var_data): 
     
    339341    if isinstance(var_data, SelectResults): 
    340342        col = getattr(var_data.sourceClass.q, colname, None) 
    341343 
    342     elif isinstance(var_data, SASelectResults) or isinstance(var_data, Query)
     344    elif isinstance(var_data, SASelectResults)
    343345        col = getattr( 
    344346                var_data._query.mapper.c, 
    345347                colname[len(var_data._query.mapper.column_prefix or ''):], 
    346348                None) 
     349    elif isinstance(var_data, Query): 
     350        col = getattr( 
     351                var_data.mapper.c, 
     352                colname[len(var_data.mapper.column_prefix or ''):], 
     353                None) 
    347354 
    348355    else: 
    349356        raise StandardError, 'expected SelectResults'