Allow None in parurl values to omit keys.
[wrw.git] / wrw / proto.py
index 628bfc9..70f8f77 100644 (file)
@@ -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 = ""
@@ -182,11 +187,15 @@ def parstring(pars={}, **augment):
             del augment[key]
         else:
             val = pars[key]
+        if val is None:
+            continue
         if buf != "": buf += "&"
         buf += urlq(key) + "=" + urlq(str(val))
-    for key in augment:
+    for key, val in augment.items():
+        if val is None:
+            continue
         if buf != "": buf += "&"
-        buf += urlq(key) + "=" + urlq(str(augment[key]))
+        buf += urlq(key) + "=" + urlq(str(val))
     return buf
 
 def parurl(url, pars={}, **augment):