Ticket #1588: paginate.py.diff

File paginate.py.diff, 1.6 kB (added by cck197, 1 year ago)

Patch for turbogears/turbogears/paginate.py

  • paginate.py

    old new  
    125125            log.debug('ordering %s' % ordering) 
    126126 
    127127            row_count = 0 
    128             if (SelectResults and isinstance(var_data, SelectResults)) or \ 
     128            if isinstance(var_data, list) or (sqlalchemy and isinstance( 
     129                    var_data, sqlalchemy.orm.attributes.InstrumentedList)): 
     130                row_count = len(var_data) 
     131                o = [(index, key, default_reverse) for (key, (index, 
     132                    default_reverse)) in ordering.iteritems()] 
     133                o.sort( reverse = True ) 
     134                for (index, key, default_reverse) in o: 
     135                    log.debug("sorting by %s, reverse: %s" % (key, default_reverse)) 
     136                    var_data.sort( key = lambda item: getattr( item, key ),  
     137                        reverse = default_reverse ) 
     138 
     139            elif (SelectResults and isinstance(var_data, SelectResults)) or \ 
    129140               (SASelectResults and isinstance(var_data, SASelectResults)) or \ 
    130141               (Query and isinstance(var_data, Query)): 
    131142                row_count = var_data.count() 
     
    148159                    else: 
    149160                        var_data = var_data.order_by(order_cols) 
    150161 
    151             elif isinstance(var_data, list) or (sqlalchemy and isinstance( 
    152                     var_data, sqlalchemy.orm.attributes.InstrumentedList)): 
    153                 row_count = len(var_data) 
    154162 
    155163            else: 
    156164                raise StandardError(