Document webdav: fix mkcol, rename, get_data (temp)
Conflicts: document_webdav/dav_fs.py document_webdav/webdav_server.py bzr revid: p_christ@hol.gr-20100712193236-8xde2tpmmxfp004n
This commit is contained in:
@@ -313,7 +313,7 @@ class openerp_dav_handler(dav_interface):
|
||||
self.parent.log_error("GET exception: %s",str(e))
|
||||
self.parent.log_message("Exc: %s", traceback.format_exc())
|
||||
raise DAV_Error, 409
|
||||
return datas
|
||||
return str(datas) # FIXME!
|
||||
finally:
|
||||
if cr: cr.close()
|
||||
|
||||
@@ -434,22 +434,27 @@ class openerp_dav_handler(dav_interface):
|
||||
if cr: cr.close()
|
||||
|
||||
def mkcol(self,uri):
|
||||
""" create a new collection """
|
||||
""" create a new collection
|
||||
see par. 9.3 of rfc4918
|
||||
"""
|
||||
self.parent.log_message('MKCOL: %s' % uri)
|
||||
uri = self.uri2local(uri)[1:]
|
||||
if not uri:
|
||||
cr, uid, pool, dbname, uri2 = self.get_cr(uri)
|
||||
if not uri2[-1]:
|
||||
cr.close()
|
||||
raise DAV_Error(409, "Cannot create nameless collection")
|
||||
if uri[-1]=='/':uri=uri[:-1]
|
||||
parent = '/'.join(uri.split('/')[:-1])
|
||||
parent = self.baseuri + parent
|
||||
uri = self.baseuri + uri
|
||||
cr, uid, pool,dbname, uri2 = self.get_cr(uri)
|
||||
if not dbname:
|
||||
cr.close()
|
||||
raise DAV_Error, 409
|
||||
node = self.uri2object(cr,uid,pool, uri2[:-1])
|
||||
if node:
|
||||
node.create_child_collection(cr, uri2[-1])
|
||||
cr.commit()
|
||||
if not node:
|
||||
cr.close()
|
||||
raise DAV_Error(409, "Parent path %s does not exist" % uri2[:-1])
|
||||
nc = node.child(cr, uri2[-1])
|
||||
if nc:
|
||||
cr.close()
|
||||
raise DAV_Error(405, "Path already exists")
|
||||
self._try_function(node.create_child_collection, (cr, uri2[-1]), "create col %s" % uri2[-1], cr=cr)
|
||||
cr.commit()
|
||||
cr.close()
|
||||
return True
|
||||
|
||||
@@ -650,7 +655,6 @@ class openerp_dav_handler(dav_interface):
|
||||
advanced systems we might also have to copy properties from
|
||||
the source to the destination.
|
||||
"""
|
||||
print " copy a collection."
|
||||
return self.mkcol(dst)
|
||||
|
||||
|
||||
|
||||
@@ -78,6 +78,18 @@ class DAVHandler(FixSendError,DAVRequestHandler):
|
||||
self.baseuri = "http://%s:%d/"% (self.server.server_name, self.server.server_port)
|
||||
self.IFACE_CLASS = openerp_dav_handler(self, self.verbose)
|
||||
|
||||
def copymove(self, CLASS):
|
||||
""" Our uri scheme removes the /webdav/ component from there, so we
|
||||
need to mangle the header, too.
|
||||
"""
|
||||
dest = self.headers['Destination']
|
||||
up = urlparse.urlparse(urllib.unquote(self.headers['Destination']))
|
||||
if up.path.startswith(self.davpath):
|
||||
self.headers['Destination'] = up.path[len(self.davpath):]
|
||||
else:
|
||||
raise DAV_Forbidden("Not allowed to copy/move outside webdav path")
|
||||
DAVRequestHandler.copymove(self, CLASS)
|
||||
|
||||
def get_davpath(self):
|
||||
return self.davpath
|
||||
|
||||
|
||||
Reference in New Issue
Block a user