diff options
| author | Thibault Francois <tfr@openerp.com> | 2010-11-12 14:44:40 +0100 |
|---|---|---|
| committer | Thibault Francois <tfr@openerp.com> | 2010-11-12 14:44:40 +0100 |
| commit | cd2af4bb80ed730f7e6ec6c6c0c21dcdf39e15f5 (patch) | |
| tree | a05146180ce42b8aff18bd35e4bfc50a360004ea /addons/document_webdav/webdav_server.py | |
| parent | b82ad6d02201a832152dc3998d75477d579a8d8d (diff) | |
| parent | 8ad87d0d946ecc5fcfc75f665409828921d2299b (diff) | |
[FIX,IMP] addons1 : 16 Bugs fix
Plugin improvement
Demo user has user right
crm leads logs stages changes
bzr revid: tfr@openerp.com-20101112134440-drbjwz4in82irkav
Diffstat (limited to 'addons/document_webdav/webdav_server.py')
| -rw-r--r-- | addons/document_webdav/webdav_server.py | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py index df2c4a871f6..0e5973c95b3 100644 --- a/addons/document_webdav/webdav_server.py +++ b/addons/document_webdav/webdav_server.py @@ -28,7 +28,6 @@ import netsvc -import tools from dav_fs import openerp_dav_handler from tools.config import config from DAV.WebDAVServer import DAVRequestHandler @@ -36,10 +35,13 @@ from service.websrv_lib import HTTPDir, FixSendError, HttpOptions from BaseHTTPServer import BaseHTTPRequestHandler import urlparse import urllib -from string import atoi,split +import re +from string import atoi from DAV.errors import * # from DAV.constants import DAV_VERSION_1, DAV_VERSION_2 +khtml_re = re.compile(r' KHTML/([0-9\.]+) ') + def OpenDAVConfig(**kw): class OpenDAV: def __init__(self, **kw): @@ -96,7 +98,6 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): """ 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):] @@ -131,6 +132,16 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): # the BufferingHttpServer will send Connection: close , while # the BaseHTTPRequestHandler will only accept int code. # workaround both of them. + if self.command == 'PROPFIND' and int(code) == 404: + kh = khtml_re.search(self.headers.get('User-Agent','')) + if kh and (kh.group(1) < '4.5'): + # There is an ugly bug in all khtml < 4.5.x, where the 404 + # response is treated as an immediate error, which would even + # break the flow of a subsequent PUT request. At the same time, + # the 200 response (rather than 207 with content) is treated + # as "path not exist", so we send this instead + # https://bugs.kde.org/show_bug.cgi?id=166081 + code = 200 BaseHTTPRequestHandler.send_response(self, int(code), message) def send_header(self, key, value): @@ -216,7 +227,7 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): try: location = dc.put(uri, body, ct) except DAV_Error, (ec,dd): - self._logger.warning("Cannot PUT to %s: %s", uri, dd, exc_info=True) + self.log_error("Cannot PUT to %s: %s", uri, dd) return self.send_status(ec) headers = {} |
