diff options
| author | Harry (Open ERP) <hmo@tinyerp.com> | 2010-04-12 16:22:00 +0530 |
|---|---|---|
| committer | Harry (Open ERP) <hmo@tinyerp.com> | 2010-04-12 16:22:00 +0530 |
| commit | 565d1a18c737021cde9e0faa7b5718ae04992972 (patch) | |
| tree | 29de4b290d2142a0b8c4e57cf5aa6b7455f77178 /addons/document_webdav/webdav_server.py | |
| parent | 85c42e9270d9689e08b2864a5292ae801ecbfd67 (diff) | |
[REF+IMP] caldav
bzr revid: hmo@tinyerp.com-20100412105200-c3kvao81ypbh8l0g
Diffstat (limited to 'addons/document_webdav/webdav_server.py')
| -rw-r--r-- | addons/document_webdav/webdav_server.py | 96 |
1 files changed, 3 insertions, 93 deletions
diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py index f2c129dd608..6cda2d172ef 100644 --- a/addons/document_webdav/webdav_server.py +++ b/addons/document_webdav/webdav_server.py @@ -29,102 +29,11 @@ import netsvc import tools -from dav_fs import tinydav_handler +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 DAV.propfind import PROPFIND -import xml.dom.minidom -domimpl = xml.dom.minidom.getDOMImplementation() -import urlparse -import urllib -from DAV import utils - -super_mk_prop_response = PROPFIND.mk_prop_response -def mk_prop_response(self,uri,good_props,bad_props,doc): - """ make a new <prop> result element - - We differ between the good props and the bad ones for - each generating an extra <propstat>-Node (for each error - one, that means). - - """ - re=doc.createElement("D:response") - # append namespaces to response - nsnum=0 - for nsname in self.namespaces: - re.setAttribute("xmlns:ns"+str(nsnum),nsname) - nsnum=nsnum+1 - - # write href information - uparts=urlparse.urlparse(uri) - fileloc=uparts[2] - href=doc.createElement("D:href") - huri=doc.createTextNode(uparts[0]+'://'+'/'.join(uparts[1:2]) + urllib.quote(fileloc)) - href.appendChild(huri) - re.appendChild(href) - - # write good properties - ps=doc.createElement("D:propstat") - if good_props: - re.appendChild(ps) - - gp=doc.createElement("D:prop") - for ns in good_props.keys(): - ns_prefix="ns"+str(self.namespaces.index(ns))+":" - for p,v in good_props[ns].items(): - if not v: - pass - pe=doc.createElement(ns_prefix+str(p)) - if hasattr(v, '__class__') and v.__class__.__name__ == 'Element': - pe.appendChild(v) - else: - if p=="resourcetype": - if v==1: - ve=doc.createElement("D:collection") - pe.appendChild(ve) - else: - ve=doc.createTextNode(tools.ustr(v)) - pe.appendChild(ve) - - gp.appendChild(pe) - - ps.appendChild(gp) - s=doc.createElement("D:status") - t=doc.createTextNode("HTTP/1.1 200 OK") - s.appendChild(t) - ps.appendChild(s) - re.appendChild(ps) - - # now write the errors! - if len(bad_props.items()): - - # write a propstat for each error code - for ecode in bad_props.keys(): - ps=doc.createElement("D:propstat") - re.appendChild(ps) - bp=doc.createElement("D:prop") - ps.appendChild(bp) - - for ns in bad_props[ecode].keys(): - ns_prefix="ns"+str(self.namespaces.index(ns))+":" - - for p in bad_props[ecode][ns]: - pe=doc.createElement(ns_prefix+str(p)) - bp.appendChild(pe) - - s=doc.createElement("D:status") - t=doc.createTextNode(utils.gen_estring(ecode)) - s.appendChild(t) - ps.appendChild(s) - re.appendChild(ps) - - # return the new response element - return re - - -PROPFIND.mk_prop_response = mk_prop_response def OpenDAVConfig(**kw): class OpenDAV: @@ -136,6 +45,7 @@ def OpenDAVConfig(**kw): return Config() + class DAVHandler(FixSendError,DAVRequestHandler): verbose = False @@ -162,7 +72,7 @@ class DAVHandler(FixSendError,DAVRequestHandler): def setup(self): davpath = '/'+config.get_misc('webdav','vdir','webdav') self.baseuri = "http://%s:%d/"% (self.server.server_name,self.server.server_port) - self.IFACE_CLASS = tinydav_handler(self, self.verbose) + self.IFACE_CLASS = openerp_dav_handler(self, self.verbose) def log_message(self, format, *args): |
