Commit by: heikki
Modified files:
chandler/parcels/osaf/framework/sharing/acl.py None 1.1
chandler/parcels/osaf/framework/sharing/WebDAV.py 1.3 1.4
chandler/parcels/osaf/framework/webdav/acl.py 1.1 None

Log message:
Better API for WebDAV ACL (still low level). Moving to sharing directory, and 
adding the getacl/setacl methods into WebDAV.Client so they can be used.

ViewCVS links:
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/sharing/acl.py?rev=1.1&content-type=text/vnd.viewcvs-markup
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/sharing/WebDAV.py.diff?r1=text&tr1=1.3&r2=text&tr2=1.4
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/webdav/acl.py.diff?r1=text&tr1=1.1&r2=text&tr2=None

Index: chandler/parcels/osaf/framework/sharing/WebDAV.py
diff -u chandler/parcels/osaf/framework/sharing/WebDAV.py:1.3 
chandler/parcels/osaf/framework/sharing/WebDAV.py:1.4
--- chandler/parcels/osaf/framework/sharing/WebDAV.py:1.3       Tue Jan 11 
15:03:49 2005
+++ chandler/parcels/osaf/framework/sharing/WebDAV.py   Fri Jan 21 16:35:50 2005
@@ -1,5 +1,5 @@
-__version__ = "$Revision: 1.3 $"
-__date__ = "$Date: 2005/01/11 23:03:49 $"
+__version__ = "$Revision: 1.4 $"
+__date__ = "$Date: 2005/01/22 00:35:50 $"
 __copyright__ = "Copyright (c) 2005 Open Source Applications Foundation"
 __license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm";
 
@@ -13,6 +13,7 @@
 import M2Crypto.httpslib as httpslib
 
 XML_CONTENT_TYPE = 'text/xml; charset="utf-8"'
+XML_DOC_HEADER = '<?xml version="1.0" encoding="utf-8"?>'
 
 class Client(object):
 
@@ -59,12 +60,12 @@
     def delete(self, url, extraHeaders={ }):
         return self._request('DELETE', url, extraHeaders=extraHeaders)
 
-    def propfind(self, url, depth=None, extraHeaders={ }):
+    def propfind(self, url, body=None, depth=None, extraHeaders={ }):
         extraHeaders = extraHeaders.copy()
         extraHeaders['Content-Type'] = XML_CONTENT_TYPE
         if depth is not None:
             extraHeaders['Depth'] = str(depth)
-        return self._request('PROPFIND', url, extraHeaders=extraHeaders)
+        return self._request('PROPFIND', url, body, extraHeaders=extraHeaders)
 
     def ls(self, url, extraHeaders={ }):
         # A helper method which parses a PROPFIND response and returns a
@@ -114,6 +115,21 @@
         doc.freeDoc()
         return resources
 
+    def getacl(self, url, extraHeaders={ }):
+        # Strictly speaking this method is not needed, you could use
+        # propfind, or getprops.
+        body = XML_DOC_HEADER + \
+               '<D:propfind 
xmlns:D="DAV:"><D:prop><D:acl/></D:prop></D:propfind>'
+        return self.propfind(url, body, extraHeaders=extraHeaders)
+
+    def setacl(self, url, acl, extraHeaders={ }):
+        # url is the resource who's acl we are changing
+        # acl is an ACL object that sets the actual ACL
+        body = XML_DOC_HEADER + str(acl)
+        headers = extraHeaders.copy()
+        headers['Content-Type'] = XML_CONTENT_TYPE
+        return self._request('ACL', url, body, headers)
+
     def _request(self, method, url, body=None, extraHeaders={ }):
         if self.conn is None:
             self.connect()

_______________________________________________
Commits mailing list
Commits@osafoundation.org
http://lists.osafoundation.org/mailman/listinfo/commits

Reply via email to