Merge branch 'master' into python3
authorFredrik Tolf <fredrik@dolda2000.com>
Sun, 5 Feb 2012 16:00:30 +0000 (17:00 +0100)
committerFredrik Tolf <fredrik@dolda2000.com>
Sun, 5 Feb 2012 16:00:30 +0000 (17:00 +0100)
Conflicts:
wrw/resp.py
wrw/session.py

1  2 
wrw/dispatch.py
wrw/resp.py
wrw/session.py
wrw/util.py

diff --cc wrw/dispatch.py
@@@ -1,3 -1,6 +1,6 @@@
 -import env
+ import sys, traceback
++from . import env
  __all__ = ["restart"]
  
  class restart(Exception):
@@@ -39,15 -42,33 +42,33 @@@ class iterproxy(object)
          if hasattr(self.bk, "close"):
              self.bk.close()
  
 -    import resp
+ def defaulterror(req, excinfo):
++    from . import resp
+     traceback.print_exception(*excinfo)
+     raise resp.httperror(500)
+ def wraphandler(handler, excinfo):
+     def wrapped(req):
+         return handler(req, excinfo)
+     return wrapped
+ errorhandler = env.var(defaulterror)
  def handle(req, startreq, handler):
+     eh = errorhandler.val
      try:
          resp = [""]
          while True:
              try:
                  resp = iterproxy(handler(req))
                  break
 -            except restart, i:
 +            except restart as i:
                  handler = i.handle
 -            except Exception, i:
++            except Exception as i:
+                 if eh is None:
+                     raise
+                 handler = wraphandler(eh, sys.exc_info())
+                 eh = None
          req.commit(startreq)
          return resp
      finally:
diff --cc wrw/resp.py
@@@ -1,4 -1,4 +1,4 @@@
- from . import dispatch, proto
 -import dispatch, proto, env
++from . import dispatch, proto, env
  
  __all__ = ["skeleton", "skelfor", "setskel", "usererror"]
  
diff --cc wrw/session.py
@@@ -1,5 -1,5 +1,5 @@@
  import threading, time, pickle, random, os
- from . import cookie
 -import cookie, env
++from . import cookie, env
  
  __all__ = ["db", "get"]
  
diff --cc wrw/util.py
Simple merge