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

Changeset 280

Show
Ignore:
Timestamp:
06/11/05 10:33:41
Author:
mikerobi
Message:

SessionFilter? improvements

Files:

Legend:

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

    r277 r280  
    8888import os.path 
    8989 
    90 def getAll(key): 
     90def getAll(key, asList = False): 
    9191    """ 
    9292    getAll will lookup the key in the current node and all of its parent nodes, 
     
    108108        result[path] = value 
    109109     
    110     return result 
     110    if asList: 
     111        return [(path, result[path]) for path in result] 
     112    else: 
     113        return result 
    111114 
    112115class CaseSensitiveConfigParser(ConfigParser.ConfigParser): 
  • trunk/cherrypy/lib/filter/sessionfilter/basesession.py

    r277 r280  
    3333 
    3434from sessiondict import SimpleSessionDict 
     35 
     36import sessionconfig 
    3537 
    3638class BaseSession(object): 
     
    7678      return {  
    7779               'timestamp'  : int(time.time()), 
    78                'timeout'    : cherrypy.cpg.config.get('sessionFilter.timeout') * 60, 
     80               'timeout'    : sessionconfig.get('timeout', self.sessionName) * 60, 
    7981               'lastAccess' : int(time.time()), 
    80                'key' : self.generateSessionId() 
     82               'key' : self.generateSessionKey() 
    8183             } 
    8284        
     
    8890        return SimpleSessionDict(newData) 
    8991 
    90     def generateSessionId(self): 
     92    def generateSessionKey(self): 
    9193        """ Function to return a new sessioId """ 
    92         cpg = cherrypy.cpg 
    93         sessionKeyFunc = cpg.config.get('%s.keyMaker' % self.sessionName, None) 
     94        sessionKeyFunc = sessionconfig.get('keyGenerator', self.sessionName, None) 
    9495         
    9596        if sessionKeyFunc: 
     
    129130 
    130131    def commitCache(self, sessionKey):  
    131         cpg = cherrypy.cpg  
    132132         
    133133        session = self.__sessionCache[sessionKey] 
     
    135135        self.setSession(session) 
    136136         
    137         cacheTimeout = cpg.config.get('sessionFilter.cacheTimeout', None) 
     137        cacheTimeout = sessionconfig.get('%s.cacheTimeout' % self.sessionName, None) 
     138        if not cacheTimeout: 
     139            cacheTimeout = sessionconfig.get('sessionFilter.cacheTimeout', None) 
    138140         
    139141        if session.threadCount == 0 and not cacheTimeout: 
     
    144146        """ cleanup all inactive sessions """ 
    145147         
    146         cacheTimeout = cpg.config.get('sessionFilter.cacheTimeout', None) 
     148        cacheTimeout = sessionconfig.get('%s.cacheTimeout' % self.sessionName, None) 
    147149         
    148150        # don't waste cycles if we aren't caching inactive sessions 
     
    158160        """ delete a session from storage """ 
    159161 
    160     def register(cls): 
    161         """ 
    162         This method will place the configName and session object so 
    163         the configuration system will know that "BaseSession" maps to 
    164         the BaseSession class 
    165         """ 
    166         cherrypy.cpg.session.registerSession(cls.configName, cls) 
    167     register=classmethod(register) 
    168  
    169162    def cleanUpOldSessions(self): 
    170163        """This function cleans up expired sessions""" 
  • trunk/cherrypy/lib/filter/sessionfilter/dbmsession.py

    r275 r280  
    4242        BaseSession.__init__(self, sessionName) 
    4343         
    44         sessionName=cpg.config.get('session.new', None) 
    45         sessionFile=cpg.config.get('%s.dbFile' % sessionName, 'shelfSession.db'
     44        sessionName=cpg.config.get('sessionFilter.new', None) 
     45        sessionFile=cpg.config.get('%s.dbFile' % sessionName, '%s.db' % sessionName
    4646        self.__data = shelve.open(sessionFile, 'c') 
    4747 
  • trunk/cherrypy/lib/filter/sessionfilter/filesession.py

    r275 r280  
    3434 
    3535from sessionerrors import * 
     36import sessionconfig 
    3637 
    3738import threading 
     
    4546    def __storageDir(self): 
    4647        cpg = cherrypy.cpg 
    47         storageDir = cpg.config.get('%s.storageFileDir' % self.sessionName) 
    48         if not storageDir: 
    49             storageDir = cpg.config.get('sessionFilter.storageFileDir', '.sessionFiles') 
     48        storageDir = sessionconfig.get('storageFileDir', self.sessionName, '.sessionFiles') 
    5049        return storageDir 
    5150     
  • trunk/cherrypy/lib/filter/sessionfilter/sessionfilter.py

    r277 r280  
    77from sessionerrors import SessionNotFoundError  
    88 
    9 from ramsession  import RamSession  
    10 from filesession import FileSession 
    11 from dbmsession  import DBMSession 
    12  
    13 _sessionTypes = { 
    14                   'ram'       : RamSession, 
    15                   'file'      : FileSession, 
    16                   'anydb'     : DBMSession 
    17                 } 
    18  
    19 try: 
    20     # the user might not have sqlobject instaled 
    21     from sqlobjectsession  import SQLObjectSession 
    22     _sessionTypes['sqlobject']  = SQLObjectSession 
    23 except ImportError: 
    24     pass 
    25      
     9import sessionconfig  
    2610 
    2711def _getSessions(): 
     
    3923        sessionManager = cpg.config.get('%s.sessionManager' % sessionName, None) 
    4024        if not sessionManager: 
    41             storageType = cpg.config.get('%s.storageType' % sessionName, 'ram'
     25            storageType = sessionconfig.get('storageType', sessionName
    4226             
    43             #sessionManager = _sessionTypes[storageType](sessionName) 
    4427            try: 
    45                 sessionManager = _sessionTypes[storageType](sessionName) 
     28                sessionManager = sessionconfig._sessionTypes[storageType](sessionName) 
    4629            except KeyError: 
    4730                storageType = cpg.config.get('%s.customStorageClass' % sessionName) 
    4831                if storageType: 
    4932                    try: 
    50                         cherrypy._cputil.getSpecialAttribute(storageType) 
     33                        storageClass = cherrypy._cputil.getSpecialAttribute(storageType) 
     34                        sessionManager = storageClass(sessionName) 
    5135                    except cherrypy.cperror.InternalError: 
    5236                        raise SessionBadStorageTypeError(storageType) 
     
    6347                             ) 
    6448        else: # try and clean up 
    65             cleanUpDelay = cpg.config.get('session.cleanUpDelay'
     49            cleanUpDelay = sessionconfig.get('cleanUpDelay', sessionName
    6650            now = time.time() 
    6751            lastCleanUp = sessionManager.lastCleanUp 
     
    10791            cookieName = cpg.config.get('%s.cookieName' % sessionName, None) 
    10892            if not cookieName: 
    109                 cookieName = cpg.config.get('session.cookieName') + '|' + re.sub('/','_', sessionPath) + '|' + sessionName 
     93                cookieName = cpg.config.get('sessionFilter.cookieName') + '|' + sessionName + '|' + re.sub('/','_', sessionPath) 
    11094                cpg.config.update({ 
    11195                                    sessionPath : {'%s.cookieName' % sessionName : cookieName} 

Hosted by WebFaction

Log in as guest/cpguest to create tickets