Changeset 280
- Timestamp:
- 06/11/05 10:33:41
- Files:
-
- trunk/cherrypy/_cpconfig.py (modified) (2 diffs)
- trunk/cherrypy/lib/filter/sessionfilter/basesession.py (modified) (7 diffs)
- trunk/cherrypy/lib/filter/sessionfilter/dbmsession.py (modified) (1 diff)
- trunk/cherrypy/lib/filter/sessionfilter/filesession.py (modified) (2 diffs)
- trunk/cherrypy/lib/filter/sessionfilter/sessionfilter.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/cherrypy/_cpconfig.py
r277 r280 88 88 import os.path 89 89 90 def getAll(key ):90 def getAll(key, asList = False): 91 91 """ 92 92 getAll will lookup the key in the current node and all of its parent nodes, … … 108 108 result[path] = value 109 109 110 return result 110 if asList: 111 return [(path, result[path]) for path in result] 112 else: 113 return result 111 114 112 115 class CaseSensitiveConfigParser(ConfigParser.ConfigParser): trunk/cherrypy/lib/filter/sessionfilter/basesession.py
r277 r280 33 33 34 34 from sessiondict import SimpleSessionDict 35 36 import sessionconfig 35 37 36 38 class BaseSession(object): … … 76 78 return { 77 79 'timestamp' : int(time.time()), 78 'timeout' : cherrypy.cpg.config.get('sessionFilter.timeout') * 60,80 'timeout' : sessionconfig.get('timeout', self.sessionName) * 60, 79 81 'lastAccess' : int(time.time()), 80 'key' : self.generateSession Id()82 'key' : self.generateSessionKey() 81 83 } 82 84 … … 88 90 return SimpleSessionDict(newData) 89 91 90 def generateSession Id(self):92 def generateSessionKey(self): 91 93 """ 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) 94 95 95 96 if sessionKeyFunc: … … 129 130 130 131 def commitCache(self, sessionKey): 131 cpg = cherrypy.cpg132 132 133 133 session = self.__sessionCache[sessionKey] … … 135 135 self.setSession(session) 136 136 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) 138 140 139 141 if session.threadCount == 0 and not cacheTimeout: … … 144 146 """ cleanup all inactive sessions """ 145 147 146 cacheTimeout = cpg.config.get('sessionFilter.cacheTimeout', None)148 cacheTimeout = sessionconfig.get('%s.cacheTimeout' % self.sessionName, None) 147 149 148 150 # don't waste cycles if we aren't caching inactive sessions … … 158 160 """ delete a session from storage """ 159 161 160 def register(cls):161 """162 This method will place the configName and session object so163 the configuration system will know that "BaseSession" maps to164 the BaseSession class165 """166 cherrypy.cpg.session.registerSession(cls.configName, cls)167 register=classmethod(register)168 169 162 def cleanUpOldSessions(self): 170 163 """This function cleans up expired sessions""" trunk/cherrypy/lib/filter/sessionfilter/dbmsession.py
r275 r280 42 42 BaseSession.__init__(self, sessionName) 43 43 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) 46 46 self.__data = shelve.open(sessionFile, 'c') 47 47 trunk/cherrypy/lib/filter/sessionfilter/filesession.py
r275 r280 34 34 35 35 from sessionerrors import * 36 import sessionconfig 36 37 37 38 import threading … … 45 46 def __storageDir(self): 46 47 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') 50 49 return storageDir 51 50 trunk/cherrypy/lib/filter/sessionfilter/sessionfilter.py
r277 r280 7 7 from sessionerrors import SessionNotFoundError 8 8 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 9 import sessionconfig 26 10 27 11 def _getSessions(): … … 39 23 sessionManager = cpg.config.get('%s.sessionManager' % sessionName, None) 40 24 if not sessionManager: 41 storageType = cpg.config.get('%s.storageType' % sessionName, 'ram')25 storageType = sessionconfig.get('storageType', sessionName) 42 26 43 #sessionManager = _sessionTypes[storageType](sessionName)44 27 try: 45 sessionManager = _sessionTypes[storageType](sessionName)28 sessionManager = sessionconfig._sessionTypes[storageType](sessionName) 46 29 except KeyError: 47 30 storageType = cpg.config.get('%s.customStorageClass' % sessionName) 48 31 if storageType: 49 32 try: 50 cherrypy._cputil.getSpecialAttribute(storageType) 33 storageClass = cherrypy._cputil.getSpecialAttribute(storageType) 34 sessionManager = storageClass(sessionName) 51 35 except cherrypy.cperror.InternalError: 52 36 raise SessionBadStorageTypeError(storageType) … … 63 47 ) 64 48 else: # try and clean up 65 cleanUpDelay = cpg.config.get('session.cleanUpDelay')49 cleanUpDelay = sessionconfig.get('cleanUpDelay', sessionName) 66 50 now = time.time() 67 51 lastCleanUp = sessionManager.lastCleanUp … … 107 91 cookieName = cpg.config.get('%s.cookieName' % sessionName, None) 108 92 if not cookieName: 109 cookieName = cpg.config.get('session .cookieName') + '|' + re.sub('/','_', sessionPath) + '|' + sessionName93 cookieName = cpg.config.get('sessionFilter.cookieName') + '|' + sessionName + '|' + re.sub('/','_', sessionPath) 110 94 cpg.config.update({ 111 95 sessionPath : {'%s.cookieName' % sessionName : cookieName}

