Merge branch 'master' into python3
authorFredrik Tolf <fredrik@dolda2000.com>
Thu, 24 May 2012 03:33:43 +0000 (05:33 +0200)
committerFredrik Tolf <fredrik@dolda2000.com>
Thu, 24 May 2012 03:34:14 +0000 (05:34 +0200)
wrw/session.py
wrw/sp/cons.py
wrw/sp/util.py
wrw/util.py

index 832387e..02d1983 100644 (file)
@@ -19,7 +19,7 @@ class session(object):
     def __init__(self, expire = 86400 * 7):
         self.id = hexencode(gennonce(16))
         self.dict = {}
-        self.lock = threading.Lock()
+        self.lock = threading.RLock()
         self.ctime = self.atime = self.mtime = int(time.time())
         self.expire = expire
         self.dctl = set()
index 9e81677..d54c314 100644 (file)
@@ -9,6 +9,10 @@ class text(node, str):
     def __todom__(self, doc):
         return doc.createTextNode(self)
 
+class raw(node, str):
+    def __todom__(self, doc):
+        raise Exception("Cannot convert raw code to DOM objects")
+
 class element(node):
     def __init__(self, ns, name, ctx):
         self.ns = ns
index c9f9401..adad537 100644 (file)
@@ -44,6 +44,9 @@ class formatter(object):
     def text(self, el):
         self.quotewrite(el)
 
+    def rawcode(self, el):
+        self.write(el)
+
     def attrval(self, buf):
         qc, qt = ("'", "&apos;") if '"' in buf else ('"', "&quot;")
         self.write(qc)
@@ -112,6 +115,8 @@ class formatter(object):
             self.element(el)
         elif isinstance(el, cons.text):
             self.text(el)
+        elif isinstance(el, cons.raw):
+            self.rawcode(el)
         else:
             raise Exception("Unknown object in element tree: " + el)
 
index b8461d1..c8b7b2c 100644 (file)
@@ -53,7 +53,7 @@ class sessiondata(object):
             except KeyError:
                 if not create:
                     return None
-                ret = cls(req)
+                ret = cls(req, sess)
                 sess[cls] = ret
                 return ret