Ticket #1508: sort_ordering_2.patch

File sort_ordering_2.patch, 1.1 kB (added by roger.demetrescu, 1 year ago)

Same patch, but without the changes on "def sql_get_column(colname, var_data):", which may be addressed in a separate changeset

  • 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):