From: Fredrik Tolf Date: Mon, 2 Sep 2013 01:26:39 +0000 (+0200) Subject: Merge branch 'master' into python3 X-Git-Url: http://dolda2000.com/gitweb/?p=wrw.git;a=commitdiff_plain;h=babf3e21cb06bf867e3ec98003d4a077090b8839;hp=a9a78095b1696f56946abfc7c284f86a21fdcc2d Merge branch 'master' into python3 Conflicts: wrw/resp.py wrw/util.py --- diff --git a/wrw/cookie.py b/wrw/cookie.py index b66e293..c6e848f 100644 --- a/wrw/cookie.py +++ b/wrw/cookie.py @@ -23,7 +23,7 @@ class cookiedict(object): def __contains__(self, name): return name in self.bk - def get(self, name, default = None): + def get(self, name, default=None): if name not in self.bk: return default return self.bk[name].value @@ -39,7 +39,7 @@ class cookiedict(object): def cookies(req): return req.item(cookiedict) -def get(req, name, default = None): +def get(req, name, default=None): return cookies(req).get(name, default) def add(req, name, value, **kw): diff --git a/wrw/env.py b/wrw/env.py index 56d040d..ed313a3 100644 --- a/wrw/env.py +++ b/wrw/env.py @@ -10,7 +10,7 @@ class stack(object): class environment(object): __slots__ = ["parent", "map"] - def __init__(self, parent = None): + def __init__(self, parent=None): self.parent = parent self.map = weakref.WeakKeyDictionary() @@ -74,7 +74,7 @@ class binding(object): class var(object): __slots__ = ["__weakref__"] - def __init__(self, default = None): + def __init__(self, default=None): if default is not None: root.map[self] = default diff --git a/wrw/form.py b/wrw/form.py index 98d2ed9..c97b0f9 100644 --- a/wrw/form.py +++ b/wrw/form.py @@ -13,7 +13,7 @@ class formwrap(object): def __getitem__(self, key): return self.cf[key][0] - def get(self, key, default = ""): + def get(self, key, default=""): if key in self: return self.cf[key][0] return default @@ -78,7 +78,7 @@ class formpart(object): raise badmultipart("Missing last multipart boundary") self.form.buf += ret - def read(self, limit = -1): + def read(self, limit=-1): self.fillbuf(limit) if limit >= 0: ret = self.buf[:limit] @@ -88,7 +88,7 @@ class formpart(object): self.buf = "" return ret - def readline(self, limit = -1): + def readline(self, limit=-1): last = 0 while True: p = self.buf.find(b'\n', last) diff --git a/wrw/proto.py b/wrw/proto.py index 0a6a430..96a8878 100644 --- a/wrw/proto.py +++ b/wrw/proto.py @@ -104,8 +104,9 @@ def simpleerror(env, startreq, code, title, msg): def urlq(url): ret = "" + invalid = "&=#?/\"'" for c in url: - if c == "&" or c == "=" or c == "#" or c == "?" or c == "/" or (ord(c) <= 32): + if c in invalid or (ord(c) <= 32): ret += "%%%02X" % ord(c) else: ret += c diff --git a/wrw/req.py b/wrw/req.py index 11f856c..016d2d8 100644 --- a/wrw/req.py +++ b/wrw/req.py @@ -21,7 +21,7 @@ class headdict(object): def __iter__(self): return iter((list[0] for list in self.dict.values())) - def get(self, key, default = ""): + def get(self, key, default=""): if key.lower() in self.dict: return self.dict[key.lower()][1] return default diff --git a/wrw/resp.py b/wrw/resp.py index ebd98ec..965df6c 100644 --- a/wrw/resp.py +++ b/wrw/resp.py @@ -42,10 +42,10 @@ class message(dispatch.restart): self.detail = detail def handle(self, req): - return skelfor(req).error(req, self.message, *self.detail) + return skelfor(req).message(req, self.message, *self.detail) class httperror(usererror): - def __init__(self, status, message = None, detail = None): + def __init__(self, status, message=None, detail=None): if message is None: message = proto.statusinfo[status][0] if detail is None: @@ -62,14 +62,20 @@ class notfound(httperror): return super().__init__(404) class redirect(dispatch.restart): - def __init__(self, url, status = 303): + bases = {"url": proto.requrl, + "script": proto.scripturl, + "site": proto.siteurl} + + def __init__(self, url, status=303, base="url"): super().__init__() self.url = url self.status = status + self.bases[base] + self.base = base def handle(self, req): req.status(self.status, "Redirect") - req.ohead["Location"] = proto.appendurl(proto.requrl(req), self.url) + req.ohead["Location"] = proto.appendurl(self.bases[self.base](req), self.url) req.ohead["Content-Length"] = 0 return [] diff --git a/wrw/session.py b/wrw/session.py index 0a17c6d..e7d8581 100644 --- a/wrw/session.py +++ b/wrw/session.py @@ -16,7 +16,7 @@ def gennonce(length): return nonce class session(object): - def __init__(self, lock, expire = 86400 * 7): + def __init__(self, lock, expire=86400 * 7): self.id = hexencode(gennonce(16)) self.dict = {} self.lock = lock @@ -39,7 +39,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 +74,7 @@ class session(object): return "" % 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 +235,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) diff --git a/wrw/sp/cons.py b/wrw/sp/cons.py index 74a6ea6..c4d9999 100644 --- a/wrw/sp/cons.py +++ b/wrw/sp/cons.py @@ -62,7 +62,7 @@ class context(object): node.attrs[str(k)] = str(v) class constructor(object): - def __init__(self, ns, elcls = element, ctx=None): + def __init__(self, ns, elcls=element, ctx=None): self._ns = ns self._elcls = elcls if ctx is None: ctx = context() diff --git a/wrw/util.py b/wrw/util.py index ed32cc6..79a8240 100644 --- a/wrw/util.py +++ b/wrw/util.py @@ -17,16 +17,16 @@ def stringwrap(charset): return dec def formparams(callable): + spec = inspect.getargspec(callable) def wrapper(req): data = form.formdata(req) - spec = inspect.getargspec(callable) args = dict(data.items()) args["req"] = req if not spec.keywords: for arg in list(args): if arg not in spec.args: del args[arg] - for i in range(len(spec.args) - len(spec.defaults)): + for i in range(len(spec.args) - (len(spec.defaults) if spec.defaults else 0)): if spec.args[i] not in args: raise resp.httperror(400, "Missing parameter", ("The query parameter `", resp.h.code(spec.args[i]), "' is required but not supplied.")) return callable(**args) @@ -71,7 +71,7 @@ class funplex(object): return fun return dec -def persession(data = None): +def persession(data=None): def dec(callable): def wrapper(req): sess = session.get(req) @@ -121,7 +121,7 @@ def pregen(callable): class sessiondata(object): @classmethod - def get(cls, req, create = True): + def get(cls, req, create=True): sess = cls.sessdb().get(req) with sess.lock: try: