Commits

Anonymous committed 3e87100

working sqlobject session storage (examples coming soon)

Comments (0)

Files changed (6)

cherrypy/_cpconfig.py

         
 import os.path
 
-def getAll(key, asList = False):
+def getAll(key):
     """
     getAll will lookup the key in the current node and all of its parent nodes,
     it will return a dictionary paths of each node containing the key and its value
     if path == '/' and value != None:
         result[path] = value
     
-    if asList:
-        return [(path, result[path]) for path in result]
-    else:
-        return result
+    return result
 
 class CaseSensitiveConfigParser(ConfigParser.ConfigParser):
     """ Sub-class of ConfigParser that keeps the case of options and

cherrypy/lib/filter/sessionfilter/basesession.py

 import cherrypy._cputil, cherrypy.cperror
 import random, time, sha, string
 
-from sessiondict import SimpleSessionDict
+from simplesessiondict import SimpleSessionDict
 
 import sessionconfig
 

cherrypy/lib/filter/sessionfilter/basesessiondict.py

+"""
+Copyright (c) 2004, CherryPy Team (team@cherrypy.org)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, 
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, 
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice, 
+      this list of conditions and the following disclaimer in the documentation 
+      and/or other materials provided with the distribution.
+    * Neither the name of the CherryPy Team nor the names of its contributors 
+      may be used to endorse or promote products derived from this software 
+      without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+"""
+
+import cherrypy.cpg
+import time
+
+from sessionerrors import SessionImmutableError
+
+def locker(function):
+    def _inner(self, *args, **kwds):
+        self._lock.acquire()
+        result = function(self, *args, **kwds)
+        self._lock.release()
+        return result
+    return _inner
+
+import threading 
+
+# this is a dictionary like class that will be exposed to the application
+# this class is used by 
+class BaseSessionDict(object):
+    """
+    cpg.request.sessionMap is a SessionDict instance.
+
+    SessionDict isntances alwasy contain the following attributes.
+    
+    'sessionKey' : A unique session identifier
+    
+    'timeout'    : The number of seconds of inactivity allowed before destroying the session
+
+    'timestamp'  : The time the session was created (seconds since the Epoch or time.time() )
+    'lastAccess' : The time the last session was accessed (seconds since the Epoch or time.time() )
+
+    sessionKey and createdAt are immutable and a SessionImmutableError will be raised if you
+    try to set one
+    """
+
+
+    def __init__(self):
+        pass
+    
+    def __eq__(self, sessionDict):
+        pass 
+        
+    def get(self, key, default = None):
+        try:
+            return self.__getitem__(key)
+        except KeyError:
+            return default
+        
+    def __getitem__(self, key):
+        pass 
+     
+    def __setitem__(self, key, value):
+        pass 
+
+    def __getattr__(self, attr):
+        pass 
+    
+    def __setattr__(self, attr, value):
+        pass 
+    
+    def expired(self):
+        now = time.time()
+        return (now - self.lastAccess) < self.timeout
+    
+    # additional functions
+    '''
+    def __getstate__(self):
+        pass
+
+    def __setstate__(self, stateDict):
+        pass
+    '''
+

cherrypy/lib/filter/sessionfilter/sessiondict.py

-"""
-Copyright (c) 2004, CherryPy Team (team@cherrypy.org)
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, 
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice, 
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice, 
-      this list of conditions and the following disclaimer in the documentation 
-      and/or other materials provided with the distribution.
-    * Neither the name of the CherryPy Team nor the names of its contributors 
-      may be used to endorse or promote products derived from this software 
-      without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""
-
-import time
-
-from sessionerrors import SessionImmutableError
-
-def locker(function):
-    def _inner(self, *args, **kwds):
-        self._lock.acquire()
-        result = function(self, *args, **kwds)
-        self._lock.release()
-        return result
-    return _inner
-
-import threading 
-
-from sessiondictbase import SessionDictBase
-
-class SimpleSessionDict(SessionDictBase):
-
-    def __init__(self, sessionData = {}):
-        self._lock = threading.RLock()
-        self.threadCount = 0
-        
-        self.__sessionData = sessionData.copy()
-        self.__sessionAttributes = {}
-        
-        # move the attributes into a seperate dictionary
-        for attr in ['timestamp', 'timeout', 'lastAccess', 'key']:
-            self.__sessionAttributes[attr] = self.__sessionData.pop(attr)
-
-    def get(self, key, default = None):
-        return self.__sessionData.get(key, default)
-    get=locker(get)
-    
-    def __getitem__(self, key):
-        return self.__sessionData[key]
-    __getitem__=locker(__getitem__)
-     
-    def __setitem__(self, key, value):
-        self.__sessionData[key] = value
-    __setitem__=locker(__setitem__)
-        
-    def __getattr__(self, attr):
-        try:
-          return self.__sessionAttributes[attr]
-        except KeyError:
-            return object.__getattribute__(self, attr)
-    __getattr__=locker(__getattr__)
-    
-    # this function we lock the hard way
-    # so we don't try to lock the lock
-    def __setattr__(self, attr, value):
-        if attr == '_lock':
-            object.__setattr__(self, attr, value)
-            return
-
-        self._lock.acquire()
-        if attr in ['key', 'timestamp']:
-            raise SessionImmutableError(attr)
-        elif attr in ['timeout', 'lastAccess']:
-            self.__sessionData[attr] = value
-        else:
-            object.__setattr__(self, attr, value)
-        self._lock.release()
-    
-    def __getstate__(self):
-        """ remove the lock so we can pickle """
-        stateDict = self.__dict__.copy()
-        stateDict['threadCount'] = 0
-        stateDict.pop('_lock')
-        return stateDict
-
-    def __setstate__(self, stateDict):
-        """ create a new lock object """
-        self.__dict__['_lock'] = threading.RLock()
-        self.__dict__.update(stateDict)
-

cherrypy/lib/filter/sessionfilter/sessiondictbase.py

-"""
-Copyright (c) 2004, CherryPy Team (team@cherrypy.org)
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, 
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice, 
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice, 
-      this list of conditions and the following disclaimer in the documentation 
-      and/or other materials provided with the distribution.
-    * Neither the name of the CherryPy Team nor the names of its contributors 
-      may be used to endorse or promote products derived from this software 
-      without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""
-
-import cherrypy.cpg
-import time
-
-from sessionerrors import SessionImmutableError
-
-def locker(function):
-    def _inner(self, *args, **kwds):
-        self._lock.acquire()
-        result = function(self, *args, **kwds)
-        self._lock.release()
-        return result
-    return _inner
-
-import threading 
-
-# this is a dictionary like class that will be exposed to the application
-# this class is used by 
-class SessionDictBase(object):
-    """
-    cpg.request.sessionMap is a SessionDict instance.
-
-    SessionDict isntances alwasy contain the following attributes.
-    
-    'sessionKey' : A unique session identifier
-    
-    'timeout'    : The number of seconds of inactivity allowed before destroying the session
-
-    'timestamp'  : The time the session was created (seconds since the Epoch or time.time() )
-    'lastAccess' : The time the last session was accessed (seconds since the Epoch or time.time() )
-
-    sessionKey and createdAt are immutable and a SessionImmutableError will be raised if you
-    try to set one
-    """
-
-
-    def __init__(self):
-        pass
-    
-    def __eq__(self, sessionDict):
-        pass 
-        
-    def get(self, key, default = None):
-        pass 
-    def __getitem__(self, key):
-        pass 
-     
-    def __setitem__(self, key, value):
-        pass 
-
-    def __getattr__(self, attr):
-        pass 
-    
-    def __setattr__(self, attr, value):
-        pass 
-    
-    def expired(self):
-        now = time.time()
-        return (now - self.lastAccess) < self.timeout
-    
-    # additional functions
-    '''
-    def __getstate__(self):
-        pass
-
-    def __setstate__(self, stateDict):
-        pass
-    '''
-

cherrypy/lib/filter/sessionfilter/simplesessiondict.py

+"""
+Copyright (c) 2004, CherryPy Team (team@cherrypy.org)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, 
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, 
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice, 
+      this list of conditions and the following disclaimer in the documentation 
+      and/or other materials provided with the distribution.
+    * Neither the name of the CherryPy Team nor the names of its contributors 
+      may be used to endorse or promote products derived from this software 
+      without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+"""
+
+import time
+
+from sessionerrors import SessionImmutableError
+
+def locker(function):
+    def _inner(self, *args, **kwds):
+        self._lock.acquire()
+        result = function(self, *args, **kwds)
+        self._lock.release()
+        return result
+    return _inner
+
+import threading 
+
+from basesessiondict import BaseSessionDict
+
+class SimpleSessionDict(BaseSessionDict):
+
+    def __init__(self, sessionData = {}):
+        self._lock = threading.RLock()
+        self.threadCount = 0
+        
+        self.__sessionData = sessionData.copy()
+        self.__sessionAttributes = {}
+        
+        # move the attributes into a seperate dictionary
+        for attr in ['timestamp', 'timeout', 'lastAccess', 'key']:
+            self.__sessionAttributes[attr] = self.__sessionData.pop(attr)
+
+    def get(self, key, default = None):
+        return self.__sessionData.get(key, default)
+    get=locker(get)
+    
+    def __getitem__(self, key):
+        return self.__sessionData[key]
+    __getitem__=locker(__getitem__)
+     
+    def __setitem__(self, key, value):
+        self.__sessionData[key] = value
+    __setitem__=locker(__setitem__)
+        
+    def __getattr__(self, attr):
+        try:
+          return self.__sessionAttributes[attr]
+        except KeyError:
+            return object.__getattribute__(self, attr)
+    __getattr__=locker(__getattr__)
+    
+    # this function we lock the hard way
+    # so we don't try to lock the lock
+    def __setattr__(self, attr, value):
+        if attr == '_lock':
+            object.__setattr__(self, attr, value)
+            return
+
+        self._lock.acquire()
+        if attr in ['key', 'timestamp']:
+            raise SessionImmutableError(attr)
+        elif attr in ['timeout', 'lastAccess']:
+            self.__sessionData[attr] = value
+        else:
+            object.__setattr__(self, attr, value)
+        self._lock.release()
+    
+    def __getstate__(self):
+        """ remove the lock so we can pickle """
+        stateDict = self.__dict__.copy()
+        stateDict['threadCount'] = 0
+        stateDict.pop('_lock')
+        return stateDict
+
+    def __setstate__(self, stateDict):
+        """ create a new lock object """
+        self.__dict__['_lock'] = threading.RLock()
+        self.__dict__.update(stateDict)
+
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.