Fix keyword-parameter handling bug in formparams.
[wrw.git] / wrw / session.py
index 0a17c6d..8141827 100644 (file)
@@ -1,23 +1,14 @@
 import threading, time, pickle, random, os
-from . import cookie, env
+from . import cookie, env, proto
 
 __all__ = ["db", "get"]
 
-def hexencode(str):
-    ret = ""
-    for byte in str:
-        ret += "%02X" % (ord(byte),)
-    return ret
-
 def gennonce(length):
-    nonce = ""
-    for i in range(length):
-        nonce += chr(random.randint(0, 255))
-    return nonce
+    return os.urandom(length)
 
 class session(object):
-    def __init__(self, lock, expire = 86400 * 7):
-        self.id = hexencode(gennonce(16))
+    def __init__(self, lock, expire=86400 * 7):
+        self.id = proto.enhex(gennonce(16))
         self.dict = {}
         self.lock = lock
         self.ctime = self.atime = self.mtime = int(time.time())
@@ -39,7 +30,7 @@ class session(object):
     def __getitem__(self, key):
         return self.dict[key]
 
-    def get(self, key, default = None):
+    def get(self, key, default=None):
         return self.dict.get(key, default)
 
     def __setitem__(self, key, value):
@@ -74,7 +65,7 @@ class session(object):
         return "<session %s>" % self.id
 
 class db(object):
-    def __init__(self, backdb = None, cookiename = "wrwsess", path = "/"):
+    def __init__(self, backdb=None, cookiename="wrwsess", path="/"):
         self.live = {}
         self.cookiename = cookiename
         self.path = path
@@ -235,7 +226,7 @@ class dirback(object):
         with open(os.path.join(self.path, key), "w") as out:
             out.write(value)
 
-default = env.var(db(backdb = dirback(os.path.join("/tmp", "wrwsess-" + str(os.getuid())))))
+default = env.var(db(backdb=dirback(os.path.join("/tmp", "wrwsess-" + str(os.getuid())))))
 
 def get(req):
     return default.val.get(req)