From 4ab6bf860cb4b9e96eb3bb1006d6548e24ea643f Mon Sep 17 00:00:00 2001 From: "P. Christeas" Date: Thu, 29 Jul 2010 16:39:36 +0300 Subject: Doc webdav: use the new server API for http OPTIONS Since a063f7e441f910f, server has a better API for the http options, use that instead of the ill-written do_OPTIONS handler.' bzr revid: p_christ@hol.gr-20100729133936-e0laz7p3j1l2zodo --- addons/document_webdav/webdav_server.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'addons/document_webdav/webdav_server.py') diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py index 9f9f2733a68..eb09b62b919 100644 --- a/addons/document_webdav/webdav_server.py +++ b/addons/document_webdav/webdav_server.py @@ -32,12 +32,13 @@ import tools from dav_fs import openerp_dav_handler from tools.config import config from DAV.WebDAVServer import DAVRequestHandler -from service.websrv_lib import HTTPDir,FixSendError +from service.websrv_lib import HTTPDir, FixSendError, HttpOptions from BaseHTTPServer import BaseHTTPRequestHandler import urlparse import urllib from string import atoi,split from DAV.errors import * +# from DAV.constants import DAV_VERSION_1, DAV_VERSION_2 def OpenDAVConfig(**kw): class OpenDAV: @@ -53,10 +54,15 @@ def OpenDAVConfig(**kw): return Config() -class DAVHandler(FixSendError,DAVRequestHandler): +class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): verbose = False protocol_version = 'HTTP/1.1' - + _HTTP_OPTIONS= { 'DAV' : ['1',], + 'Allow' : [ 'GET', 'HEAD', 'COPY', 'MOVE', 'POST', 'PUT', + 'PROPFIND', 'PROPPATCH', 'OPTIONS', 'MKCOL', + 'DELETE', 'TRACE', 'REPORT', ] + } + def get_userinfo(self,user,pw): return False def _log(self, message): @@ -99,6 +105,18 @@ class DAVHandler(FixSendError,DAVRequestHandler): def log_error(self, format, *args): netsvc.Logger().notifyChannel('xmlrpc', netsvc.LOG_WARNING, format % args) + def _prep_OPTIONS(self, opts): + ret = opts + dc=self.IFACE_CLASS + uri=urlparse.urljoin(self.get_baseuri(dc), self.path) + uri=urllib.unquote(uri) + try: + #location = dc.put(uri,body,ct) + ret = dc.prep_http_options(uri, opts) + except DAV_Error, (ec,dd): + pass + return ret + def send_response(self, code, message=None): # the BufferingHttpServer will send Connection: close , while # the BaseHTTPRequestHandler will only accept int code. -- cgit v1.2.3