summaryrefslogtreecommitdiff
path: root/addons/document_webdav/webdav_server.py
diff options
context:
space:
mode:
authorHarry (OpenERP) <hmo@tinyerp.com>2010-07-13 20:01:41 +0530
committerHarry (OpenERP) <hmo@tinyerp.com>2010-07-13 20:01:41 +0530
commit72c068a75e0811fc0aaaeb8622afab2b1f1c3ede (patch)
tree1741d7aad768d613d970a30d54a4c0af2cc87ed7 /addons/document_webdav/webdav_server.py
parent506b249a0fc32f5c6dad50ae85c39c45b0a4f9c2 (diff)
parentbbbf42c6ba0f5aa05a53c5b31f909432cbd5f708 (diff)
[MERGE]
bzr revid: hmo@tinyerp.com-20100713143141-wozs7fnurj8ckblw
Diffstat (limited to 'addons/document_webdav/webdav_server.py')
-rw-r--r--addons/document_webdav/webdav_server.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py
index 610e51a0f07..9f9f2733a68 100644
--- a/addons/document_webdav/webdav_server.py
+++ b/addons/document_webdav/webdav_server.py
@@ -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
@@ -175,6 +187,11 @@ class DAVHandler(FixSendError,DAVRequestHandler):
self.send_body(None, '201', 'Created', '', headers=headers)
+ def do_DELETE(self):
+ try:
+ DAVRequestHandler.do_DELETE(self)
+ except DAV_Error, (ec, dd):
+ return self.send_status(ec)
from service.http_server import reg_http_service,OpenERPAuthProvider