pname -- name of the property
"""
if self.M_NS.has_key(ns):
- return dav_interface.get_prop(self, uri, ns, propname)
+ try:
+ # if it's not in the interface class, a "DAV:" property
+ # may be at the node class. So shouldn't give up early.
+ return dav_interface.get_prop(self, uri, ns, propname)
+ except DAV_NotFound:
+ pass
cr, uid, pool, dbname, uri2 = self.get_cr(uri)
if not dbname:
if cr: cr.close()
re=doc.createElement("D:response")
# append namespaces to response
nsnum=0
- namespaces = self.namespaces
+ namespaces = self.namespaces[:]
if 'DAV:' in namespaces:
namespaces.remove('DAV:')
for nsname in namespaces:
ve=doc.createElement(ns_prefix+v[0])
if need_ns:
ve.setAttribute("xmlns:ns"+str(nsnum), v[1])
- if len(v) > 2 and isinstance(v[2], list):
- # support nested elements like:
- # ( 'elem', 'ns:', [('sub-elem1', 'ns1'), ...]
- _prop_elem_child(ve, v[1], v[2], ns_prefix)
+ if len(v) > 2:
+ if isinstance(v[2], list):
+ # support nested elements like:
+ # ( 'elem', 'ns:', [('sub-elem1', 'ns1'), ...]
+ _prop_elem_child(ve, v[1], v[2], ns_prefix)
+ else:
+ vt =doc.createTextNode(tools.ustr(v[2]))
+ ve.appendChild(vt)
pnode.appendChild(ve)
else:
ve=doc.createTextNode(tools.ustr(v))
else:
ns_prefix="ns"+str(namespaces.index(ns))+":"
for p,v in good_props[ns].items():
- if not v:
+ if v is None:
continue
_prop_child(gp, ns, p, v)
if self.headers.has_key("Content-Type"):
ct=self.headers['Content-Type']
try:
- location = dc.put(uri,body,ct)
+ location = dc.put(uri, body, ct)
except DAV_Error, (ec,dd):
+ self._logger.warning("Cannot PUT to %s: %s", uri, dd, exc_info=True)
return self.send_status(ec)
headers = {}