Ticket #1889: paginate_strict.patch

File paginate_strict.patch, 1.8 kB (added by chrisz, 4 months ago)

Patch for allowing paginate with strict_parameters

  • turbogears/controllers.py

    old new  
    394394        tg_util.remove_keys(kw, ["tg_random", "tg_format"] 
    395395            + config.get("tg.ignore_parameters", [])) 
    396396    else: 
     397        try: 
     398            tg_kw = dict([(k, v) for k, v in kw.items() if k in func._tg_args]) 
     399        except AttributeError: 
     400            tg_kw = {} 
    397401        args, kw = tg_util.adapt_call(func, args, kw) 
     402        kw.update(tg_kw) 
    398403    if config.get('server.environment', 'development') == 'development': 
    399404        # Only output this in development mode: If it's a field storage object, 
    400405        # this means big memory usage, and we don't want that in production 
  • turbogears/paginate.py

    old new  
    112112 
    113113    def entangle(func): 
    114114 
     115        get = turbogears.config.get 
     116 
    115117        def decorated(func, *args, **kw): 
    116118 
    117             get = turbogears.config.get 
    118  
    119119            def kwpop(name, default=None): 
    120120                return kw.pop(var_name + '_tgp_' + name, 
    121121                    kw.pop('tg_paginate_' + name, default)) 
     
    298298                        for i in xrange(offset, endpoint)] 
    299299 
    300300            return output 
     301        if not get('tg.strict_parameters', False): 
     302            try: 
     303                args = func._tg_args 
     304            except AttributeError: 
     305                args = set() 
     306            for arg in 'no', 'limit', 'order', 'ordering': 
     307                args.add(var_name + '_tgp_' + arg) 
     308                args.add('tg_paginate' + arg) 
     309            func._tg_args = args 
    301310        return decorated 
    302311    return weak_signature_decorator(entangle) 
    303312