Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 903

Show
Ignore:
Timestamp:
12/30/05 19:55:58
Author:
fumanchu
Message:

Changed filters._input_order to filters.input_filters. Same for "output". You can now also insert classes into those lists (not just the class name in a string).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/filters/__init__.py

    r891 r903  
    44 
    55# These are in order for a reason! 
    6 _input_order = [ 
     6# Entries in the input_filters and output_filters lists 
     7# may be either a class, or the full package name of a class. 
     8 
     9input_filters = [ 
    710    "cherrypy.filters.cachefilter.CacheFilter", 
    811    "cherrypy.filters.logdebuginfofilter.LogDebugInfoFilter", 
     
    1821] 
    1922 
    20 _output_order = [ 
     23output_filters = [ 
    2124    "cherrypy.filters.responseheadersfilter.ResponseHeadersFilter", 
    2225    "cherrypy.filters.xmlrpcfilter.XmlRpcFilter", 
     
    5558    conf = cherrypy.config.get 
    5659     
    57     for clsname in _input_order + conf('server.inputFilters', []): 
    58         f = instances.get(clsname) 
     60    for filtercls in input_filters + conf('server.input_filters', []): 
     61        if isinstance(filtercls, basestring): 
     62            filtercls = cptools.attributes(filtercls) 
     63         
     64        f = instances.get(filtercls) 
    5965        if f is None: 
    60             cls = cptools.attributes(clsname) 
    61             f = instances[clsname] = cls() 
     66            f = instances[filtercls] = filtercls() 
    6267        inputs.append(f) 
    6368     
    64     for clsname in conf('server.outputFilters', []) + _output_order: 
    65         f = instances.get(clsname) 
     69    for filtercls in conf('server.output_filters', []) + output_filters: 
     70        if isinstance(filtercls, basestring): 
     71            filtercls = cptools.attributes(filtercls) 
     72         
     73        f = instances.get(filtercls) 
    6674        if f is None: 
    67             cls = cptools.attributes(clsname) 
    68             f = instances[clsname] = cls() 
     75            f = instances[filtercls] = filtercls() 
    6976        outputs.append(f) 
    7077     
  • trunk/cherrypy/test/test_custom_filters.py

    r891 r903  
    9797    'global': { 
    9898        # METHOD TWO: 
    99         # Declare a classname in server.inputFilters. 
    100         'server.inputFilters': ["cherrypy.test.test_custom_filters.AccessFilter"], 
     99        # Declare a classname in server.input_filters. 
     100        'server.input_filters': ["cherrypy.test.test_custom_filters.AccessFilter"], 
    101101        'server.log_to_screen': False, 
    102102        'server.environment': 'production', 
     
    116116 
    117117# METHOD THREE: 
    118 # Append a classname to the filters._output_order chain directly. 
    119 filters._output_order.insert(0, "cherrypy.test.test_custom_filters.Numerify") 
     118# Insert a class directly into the filters.output_filters chain. 
     119# You can also insert a string, but we're effectively testing 
     120# using-a-string via the config file. 
     121filters.output_filters.insert(0, Numerify) 
    120122 
    121123# We have to call filters.init() here (if we want methods #2 and #3 

Hosted by WebFaction

Log in as guest/cpguest to create tickets