Ticket #1601: simulate_offset.diff

File simulate_offset.diff, 0.9 kB (added by joelpearson, 1 year ago)

Workaround is off by default, must be enabled in config file

  • paginate.py

    old new  
    200200            # we replace the var with the sliced one 
    201201            endpoint = offset + limit_ 
    202202            log.debug("slicing data between %d and %d", offset, endpoint) 
    203             output[var_name] = var_data[offset:endpoint] 
     203            if turbogears.config.get('paginate.simulate_offset', False): 
     204                var_data_iter = iter(var_data[:endpoint]) 
     205                # skip over the number of records specified by offset 
     206                for i in range(offset):    
     207                    var_data_iter.next() 
     208                # return the records that remain 
     209                output[var_name] = list(var_data_iter) 
     210            else: 
     211                output[var_name] = var_data[offset:endpoint] 
    204212 
    205213            return output 
    206214        return decorated