X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=wrw%2Fresp.py;fp=wrw%2Fresp.py;h=030d5ee4385a6f1a9d3e4e8f905a3f9bddfb0a7f;hb=dc7e5d54e72fd9a22f1509df0c7bbf05f8db8924;hp=0000000000000000000000000000000000000000;hpb=5ef9e48843faf4a84af0ee8912ef72adb520efca;p=wrw.git diff --git a/wrw/resp.py b/wrw/resp.py new file mode 100644 index 0000000..030d5ee --- /dev/null +++ b/wrw/resp.py @@ -0,0 +1,72 @@ +import dispatch, proto + +__all__ = ["skeleton", "skelfor", "setskel", "usererror"] + +class skeleton(object): + def page(self, title, content): + return """ + + + +%s + + +%s + +""" % (self.head(title), content) + + def skel(self, title): + return """%s\n%s""" % (title, self.style()) + + def style(self): + return "" + + def error(self, message, detail): + return self.page(message, """

%s

\n

%s

\n""" % (message, detail)) + + def message(self, message, detail): + return self.page(message, """

%s

\n

%s

\n""" % (message, detail)) + +defskel = skeleton() + +def getskel(req): + return [defskel] +def skelfor(req): + return req.item(getskel)[0] +def setskel(req, skel): + req.item(getskel)[0] = skel + +class usererror(dispatch.restart): + def __init__(self, message, detail): + super(usererror, self).__init__() + self.message = message + self.detail = detail + + def handle(self, req): + return [skelfor(req).error(self.message, self.detail)] + +class message(dispatch.restart): + def __init__(self, message, detail): + super(message, self).__init__() + self.message = message + self.detail = detail + + def handle(self, req): + return [skelfor(req).message(self.message, self.detail)] + +class httperror(usererror): + def __init__(self, status, message = None, detail = None): + if message is None: + message = proto.statusinfo[status][0] + if detail is None: + detail = proto.statusinfo[status][1] + super(httperror, self).__init__(message, detail) + self.status = status + + def handle(self, req): + req.status(self.status, self.message) + super(httperror, self).handle(req) + +class notfound(httperror): + def __init__(self): + super(notfound, self).__init__(404)