Doc Webdav: reply with relative URIs when the request was relative.
authorP. Christeas <p_christ@hol.gr>
Thu, 14 Oct 2010 12:51:18 +0000 (15:51 +0300)
committerP. Christeas <p_christ@hol.gr>
Thu, 14 Oct 2010 12:51:18 +0000 (15:51 +0300)
If the DAV client requests properties for a relative URI (without the
protocol:ip:port part), it means it can also understand responses with
relative notation, so don't bother calculating the prefix (non-trivial).

This fixes the REPORT responses to Mozilla Sunbird.

bzr revid: p_christ@hol.gr-20101014125118-3x5ivmrbaqwb1nsx

addons/document_webdav/webdav.py

index 484a105..bb2b8ca 100644 (file)
@@ -152,7 +152,12 @@ def mk_prop_response(self, uri, good_props, bad_props, doc):
         fileloc = fileloc.encode('utf-8')
     href=doc.createElement("D:href")
     davpath = self._dataclass.parent.get_davpath()
-    hurl = '%s://%s%s%s' % (uparts[0], uparts[1], davpath, urllib.quote(fileloc))
+    if uparts[0] and uparts[1]:
+        hurl = '%s://%s%s%s' % (uparts[0], uparts[1], davpath, urllib.quote(fileloc))
+    else:
+        # When the request has been relative, we don't have enough data to
+        # reply with absolute url here.
+        hurl = '%s%s' % (davpath, urllib.quote(fileloc))
     huri=doc.createTextNode(hurl)
     href.appendChild(huri)
     re.appendChild(href)
@@ -226,7 +231,12 @@ def mk_propname_response(self,uri,propnames,doc):
         fileloc = fileloc.encode('utf-8')
     href=doc.createElement("D:href")
     davpath = self._dataclass.parent.get_davpath()
-    hurl = '%s://%s%s%s' % (uparts[0], uparts[1], davpath, urllib.quote(fileloc))
+    if uparts[0] and uparts[1]:
+        hurl = '%s://%s%s%s' % (uparts[0], uparts[1], davpath, urllib.quote(fileloc))
+    else:
+        # When the request has been relative, we don't have enough data to
+        # reply with absolute url here.
+        hurl = '%s%s' % (davpath, urllib.quote(fileloc))
     huri=doc.createTextNode(hurl)
     href.appendChild(huri)
     re.appendChild(href)