X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=wrw%2Fresp.py;h=75a7f3a5cd64d9addc84a5414dc10febd3d809db;hb=f9e9a7b5b192adfc7318e7f3ba0153668eef3bc1;hp=2e26ccf778f44966bc20cf53a4fe413bc71f7b4e;hpb=c3b08e88c7940256b95a319d1f7f6cf6a40b25c6;p=wrw.git diff --git a/wrw/resp.py b/wrw/resp.py index 2e26ccf..75a7f3a 100644 --- a/wrw/resp.py +++ b/wrw/resp.py @@ -1,4 +1,4 @@ -import dispatch, proto +from . import dispatch, proto __all__ = ["skeleton", "skelfor", "setskel", "usererror"] @@ -38,7 +38,7 @@ def setskel(req, skel): class usererror(dispatch.restart): def __init__(self, message, detail): - super(usererror, self).__init__() + super().__init__() self.message = message self.detail = detail @@ -47,7 +47,7 @@ class usererror(dispatch.restart): class message(dispatch.restart): def __init__(self, message, detail): - super(message, self).__init__() + super().__init__() self.message = message self.detail = detail @@ -60,13 +60,24 @@ class httperror(usererror): message = proto.statusinfo[status][0] if detail is None: detail = proto.statusinfo[status][1] - super(httperror, self).__init__(message, detail) + super().__init__(message, detail) self.status = status def handle(self, req): req.status(self.status, self.message) - return super(httperror, self).handle(req) + return super().handle(req) class notfound(httperror): def __init__(self): - return super(notfound, self).__init__(404) + return super().__init__(404) + +class redirect(dispatch.restart): + def __init__(self, url, status = 303): + super().__init__() + self.url = url + self.status = status + + def handle(self, req): + req.status(self.status, "Redirect") + req.ohead["Location"] = proto.appendurl(proto.requrl(req), self.url) + return []