summaryrefslogtreecommitdiff
path: root/addons/document_webdav/webdav_server.py
diff options
context:
space:
mode:
authorHarry (Open ERP) <hmo@tinyerp.com>2010-04-12 16:22:00 +0530
committerHarry (Open ERP) <hmo@tinyerp.com>2010-04-12 16:22:00 +0530
commit565d1a18c737021cde9e0faa7b5718ae04992972 (patch)
tree29de4b290d2142a0b8c4e57cf5aa6b7455f77178 /addons/document_webdav/webdav_server.py
parent85c42e9270d9689e08b2864a5292ae801ecbfd67 (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.py96
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):