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

Changeset 408

Show
Ignore:
Timestamp:
07/05/05 16:18:59
Author:
mikerobi
Message:

Default filters are now initilized when the server is started. This allows access to configuration data from within init methods.

Files:

Legend:

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

    r389 r408  
    148148    decodingfilter, encodingfilter, gzipfilter, logdebuginfofilter, \ 
    149149    staticfilter, nsgmlsfilter, tidyfilter, \ 
    150     virtualhostfilter, xmlrpcfilter, sessionauthenticatefilter 
    151  
    152 from cherrypy.lib.filter import sessionfilter 
    153  
    154 _cachefilter = cachefilter.CacheFilter() 
    155 _logdebuginfofilter = logdebuginfofilter.LogDebugInfoFilter() 
    156 _nsgmlsfilter = nsgmlsfilter.NsgmlsFilter() 
    157 _sessionfilter = sessionfilter.SessionFilter() 
    158 _tidyfilter = tidyfilter.TidyFilter() 
    159 _xmlfilter = xmlrpcfilter.XmlRpcFilter() 
     150    virtualhostfilter, xmlrpcfilter, sessionauthenticatefilter, \ 
     151    sessionfilter 
     152 
     153# this contains the classes for each filter type 
     154# we do not store the instances here because the test 
     155# suite must reinitilize the filters without restarting 
     156# the server 
     157_cpDefaultFilterClasses = { 
     158    'BaseUrlFilter'      : baseurlfilter.BaseUrlFilter, 
     159    'CacheFilter'        : cachefilter.CacheFilter, 
     160    'DecodingFilter'     : decodingfilter.DecodingFilter, 
     161    'EncodingFilter'     : encodingfilter.EncodingFilter, 
     162    'GzipFilter'         : gzipfilter.GzipFilter, 
     163    'LogDebugInfoFilter' : logdebuginfofilter.LogDebugInfoFilter, 
     164    'NsgmlsFilter'       : nsgmlsfilter.NsgmlsFilter, 
     165    'SessionAuthenticateFilter' : sessionauthenticatefilter.SessionAuthenticateFilter, 
     166    'SessionFilter'      : sessionfilter.SessionFilter, 
     167    'StaticFilter'       : staticfilter.StaticFilter, 
     168    'TidyFilter'         : tidyfilter.TidyFilter, 
     169    'VirtualHostFilter'  : virtualhostfilter.VirtualHostFilter, 
     170    'XmlRpcFilter'       : xmlrpcfilter.XmlRpcFilter, 
     171
     172 
     173# this is where the actuall filter instances are first stored 
     174_cpDefaultFilterInstances = {} 
    160175 
    161176# These are in order for a reason! 
    162  
    163 _cpDefaultInputFilterList = [ 
    164     _cachefilter
    165     _logdebuginfofilter
    166     virtualhostfilter.VirtualHostFilter()
    167     baseurlfilter.BaseUrlFilter()
    168     decodingfilter.DecodingFilter()
    169     _sessionfilter
    170     sessionauthenticatefilter.SessionAuthenticateFilter()
    171     staticfilter.StaticFilter()
    172     _nsgmlsfilter
    173     _tidyfilter
    174     _xmlfilter
     177# They must be strings matching keys in _cpDefaultFilterClasses 
     178__cpDefaultInputFilters = [ 
     179    'CacheFilter'
     180    'LogDebugInfoFilter'
     181    'VirtualHostFilter'
     182    'BaseUrlFilter'
     183    'DecodingFilter'
     184    'SessionFilter'
     185    'SessionAuthenticateFilter'
     186    'StaticFilter'
     187    'NsgmlsFilter'
     188    'TidyFilter'
     189    'XmlRpcFilter'
    175190] 
    176 _cpDefaultOutputFilterList = [ 
    177     _xmlfilter, 
    178     encodingfilter.EncodingFilter(), 
    179     _tidyfilter, 
    180     _nsgmlsfilter, 
    181     _logdebuginfofilter, 
    182     gzipfilter.GzipFilter(), 
    183     _sessionfilter, 
    184     _cachefilter, 
     191 
     192__cpDefaultOutputFilters = [ 
     193    'XmlRpcFilter', 
     194    'EncodingFilter', 
     195    'TidyFilter', 
     196    'NsgmlsFilter', 
     197    'LogDebugInfoFilter', 
     198    'GzipFilter', 
     199    'SessionFilter', 
     200    'CacheFilter', 
    185201] 
     202 
     203# these are the lists cp internally uses to access the filters 
     204# they are populated when _cpInitDefaultFilters is called 
     205_cpDefaultInputFilterList  = [] 
     206_cpDefaultOutputFilterList = [] 
     207 
     208# initilize the default filters 
     209def _cpInitDefaultFilters(): 
     210    global _cpDefaultInputFilterList, _cpDefaultOutputFilterList 
     211    _cpDefaultInputFilterList  = [] 
     212    _cpDefaultOutputFilterList = [] 
     213 
     214    for filterName in __cpDefaultInputFilters: 
     215        filterClass = _cpDefaultFilterClasses[filterName] 
     216        filterInstance = _cpDefaultFilterInstances.setdefault(filterName, filterClass()) 
     217        _cpDefaultInputFilterList.append(filterInstance) 
     218     
     219    for filterName in __cpDefaultOutputFilters: 
     220        filterClass = _cpDefaultFilterClasses[filterName] 
     221        filterInstance = _cpDefaultFilterInstances.setdefault(filterName, filterClass()) 
     222        _cpDefaultOutputFilterList.append(filterInstance) 
    186223 
    187224# public domain "unrepr" implementation, found on the web and then improved. 
     
    195232class UnknownType(Exception): 
    196233    pass 
    197  
     234    # initilize the built in filters  
     235    for n in xrange(len(_cpDefaultInputFilterList)): 
     236        try: 
     237            _cpDefaultInputFilterList[n] = _cpDefaultInputFilterList[n]() 
     238        except: 
     239            pass 
     240     
     241    for n in xrange(len(_cpDefaultOutputFilterList)): 
     242        try: 
     243            _cpDefaultOutputFilterList[n] = _cpDefaultOutputFilterList[n]() 
     244        except: 
     245            pass 
     246  
    198247class Builder: 
    199248 
  • trunk/cherrypy/config.py

    r404 r408  
    5555    'server.reverseDNS': False, 
    5656    'server.threadPool': 0, 
    57  
    58     'sessionFilter.on' : False, 
    59     'sessionFilter.sessionList' : ['default'], 
    60     'sessionFIlter.storageAdaptors' : {}, 
    61     'sessionFilter.default.on': True, 
    62     'sessionFilter.default.timeout': 60, 
    63     'sessionFilter.default.cleanUpDelay': 60, 
    64     'sessionFilter.default.storageType' : 'ram', 
    65     'sessionFilter.default.cookiePrefix': 'CherryPySession', 
    66     'sessionFilter.default.storagePath': '.sessiondata' 
    6757    } 
    6858 
  • trunk/cherrypy/lib/filter/sessionfilter/__init__.py

    r403 r408  
    3636        except ImportError: 
    3737            from cherrypy._cpthreadinglocal import local 
    38  
     38         
    3939        # Create as sessions object for accessing session data 
    4040        cherrypy.sessions = local() 
    41  
    4241        self.sessionManagers = {} 
     42        cherrypy.config.update({'global' : sessionconfig._sessionDefaults}) 
    4343 
    4444 
  • trunk/cherrypy/lib/filter/sessionfilter/sessionconfig.py

    r382 r408  
    2929import cherrypy 
    3030 
     31# these get copied to the configMap when the filter 
     32# is initilized 
     33_sessionDefaults = { 
     34    'sessionFilter.on' : False, 
     35    'sessionFilter.sessionList' : ['default'], 
     36    'sessionFIlter.storageAdaptors' : {}, 
     37    'sessionFilter.default.on': True, 
     38    'sessionFilter.default.timeout': 60, 
     39    'sessionFilter.default.cleanUpDelay': 60, 
     40    'sessionFilter.default.storageType' : 'ram', 
     41    'sessionFilter.default.cookiePrefix': 'CherryPySession', 
     42    'sessionFilter.default.storagePath': '.sessiondata' 
     43} 
    3144 
    3245def retrieve(keyName, sessionName, default = None): 
  • trunk/cherrypy/server.py

    r405 r408  
    6565            - create response and request objects 
    6666            - starts a server 
     67            - initilizes built in filters 
    6768    """ 
    6869     
     
    102103    else: 
    103104        cherrypy.profiler = None 
     105 
     106    # Initilize the built in filters 
     107    cherrypy._cputil._cpInitDefaultFilters() 
    104108     
    105109    if initOnly: 
  • trunk/cherrypy/test/test.py

    r405 r408  
    187187            cherrypy.config.reset() 
    188188            cherrypy.config.update({'global': server_conf.copy()}) 
     189            cherrypy._cputil._cpInitDefaultFilters() 
    189190            suite = CPTestLoader.loadTestsFromName(testmod) 
    190191            CPTestRunner(verbosity=2).run(suite) 

Hosted by WebFaction

Log in as guest/cpguest to create tickets