X-Git-Url: http://dolda2000.com/gitweb/?p=wrw.git;a=blobdiff_plain;f=wrw%2Fproto.py;h=80e24197843c4b71f2ea04c7de826998a169eab2;hp=ad1775aabf7952f2e4e7e044a80c6d0bf1b8f51a;hb=51a13716668cc48bf87e0d0296f8b9900fafe83b;hpb=e1e1218fd66230e4ac8c7fca36a4c9a7b2496cf5 diff --git a/wrw/proto.py b/wrw/proto.py index ad1775a..80e2419 100644 --- a/wrw/proto.py +++ b/wrw/proto.py @@ -106,7 +106,7 @@ def urlq(url): if isinstance(url, str): url = url.encode("utf-8") ret = "" - invalid = b";&=#?/\"'" + invalid = b"%;&=#?/\"'" for c in url: if c in invalid or (c <= 32) or (c >= 128): ret += "%%%02X" % c @@ -168,11 +168,16 @@ def scripturl(req): raise Exception("Malformed local part when reconstructing URL") return siteurl(req) + req.uriname[1:] -def requrl(req): +def requrl(req, qs=True): s = siteurl(req) if req.uri[0] != '/': raise Exception("Malformed local part when reconstructing URL") - return siteurl(req) + req.uri[1:] + pf = req.uri[1:] + if not qs: + p = pf.find('?') + if not p < 0: + pf = pf[:p] + return siteurl(req) + pf def parstring(pars={}, **augment): buf = "" @@ -192,7 +197,7 @@ def parstring(pars={}, **augment): def parurl(url, pars={}, **augment): qs = parstring(pars, **augment) if qs != "": - return url + "?" + qs + return url + ("&" if "?" in url else "?") + qs else: return url