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

Changeset 612

Show
Ignore:
Timestamp:
09/05/05 13:06:10
Author:
rdelon
Message:

Added "sessionFilter.storageClass" config option, new SessionWrapper? that uses old-style classes and forwards *all* methods

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/lib/filter/sessionfilter.py

    r598 r612  
    122122        storage = cherrypy.config.get('sessionFilter.storageType', 'Ram') 
    123123        storage = storage[0].upper() + storage[1:] 
    124         # TODO: support custom storage types (allow users to pass 
    125         #   their own class through another config option) 
    126         sess.sessionStorage = globals()[storage + 'Storage']() 
     124 
     125        # People can set their own custom class 
     126        #   through sessionFilter.storageClass 
     127        sess.sessionStorage = \ 
     128            cherrypy.config.get('sessionFilter.storageClass', None) 
     129        if sess.sessionStorage is None: 
     130            sess.sessionStorage = globals()[storage + 'Storage']() 
    127131 
    128132        # Check if we need to clean up old sessions 
     
    395399#   calls to cherrypy.session to a thread-specific dictionary called 
    396400#   cherrypy.threadData._session.sessionData 
    397 class SessionWrapper(object)
    398     def __getattribute__(self, name): 
     401class SessionWrapper
     402    def __getattr__(self, name): 
    399403        sess = cherrypy.threadData._session 
    400404        if sess.sessionStorage is None: 
     
    406410        elif name == 'releaseLock': 
    407411            return sess.sessionStorage.releaseLock 
    408         return sess.sessionData.__getattribute__(name) 
    409     def __getitem__(self, *a, **b): 
    410         sess = cherrypy.threadData._session 
    411         if sess.sessionStorage is None: 
    412             raise SessionNotEnabledError() 
    413         return sess.sessionData.__getitem__(*a, **b) 
    414     def __setitem__(self, *a, **b): 
    415         sess = cherrypy.threadData._session 
    416         if sess.sessionStorage is None: 
    417             raise SessionNotEnabledError() 
    418         return sess.sessionData.__setitem__(*a, **b) 
    419     def __delitem__(self, *a, **b): 
    420         sess = cherrypy.threadData._session 
    421         if sess.sessionStorage is None: 
    422             raise SessionNotEnabledError() 
    423         return sess.sessionData.__delitem__(*a, **b) 
    424     def __contains__(self, *a, **b): 
    425         sess = cherrypy.threadData._session 
    426         if sess.sessionStorage is None: 
    427             raise SessionNotEnabledError() 
    428         return sess.sessionData.__contains__(*a, **b) 
     412        return getattr(sess.sessionData, name) 

Hosted by WebFaction

Log in as guest/cpguest to create tickets