[CalendarServer-changes] [90] CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav

source_changes at macosforge.org source_changes at macosforge.org
Thu Aug 31 07:37:21 PDT 2006


Revision: 90
Author:   cdaboo at apple.com
Date:     2006-08-31 07:37:16 -0700 (Thu, 31 Aug 2006)

Log Message:
-----------
More fixes to get reports working with new deferred architecture.

Modified Paths:
--------------
    CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/method/report_calquery.py
    CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/method/report_common.py
    CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/method/report_multiget.py
    CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/resource.py

Modified: CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/method/report_calquery.py
===================================================================
--- CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/method/report_calquery.py	2006-08-31 13:58:05 UTC (rev 89)
+++ CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/method/report_calquery.py	2006-08-31 14:37:16 UTC (rev 90)
@@ -43,13 +43,19 @@
     Generate a calendar-query REPORT.
     (CalDAV-access-09, section 7.6)
     """
-    if not self.isCollection() and not self.locateParent(request, request.uri).isPseudoCalendarCollection():
-        log.err("calendar-query report is not allowed on a resource outside of a calendar collection %s" % (self,))
-        raise HTTPError(StatusResponse(responsecode.FORBIDDEN, "Must be calendar collection or calendar resource"))
 
+    # Verify root element
     if calendar_query.qname() != (caldav_namespace, "calendar-query"):
         raise ValueError("{CalDAV:}calendar-query expected as root element, not %s." % (calendar_query.sname(),))
 
+    if not self.isCollection():
+        parent = waitForDeferred(self.locateParent(request, request.uri))
+        yield parent
+        parent = parent.getResult()
+        if not parent.isPseudoCalendarCollection():
+            log.err("calendar-query report is not allowed on a resource outside of a calendar collection %s" % (self,))
+            raise HTTPError(StatusResponse(responsecode.FORBIDDEN, "Must be calendar collection or calendar resource"))
+
     responses = []
 
     filter = calendar_query.filter
@@ -149,10 +155,11 @@
                     yield child
                     child = child.getResult()
 
-                    error = waitForDeferred(child.checkAccess(request, (davxml.Read(),), inheritedaces=filteredaces))
-                    yield error
-                    error = error.getResult()
-                    if error:
+                    try:
+                        d = waitForDeferred(child.checkAccess(request, (davxml.Read(),), inheritedaces=filteredaces))
+                        yield d
+                        d.getResult()
+                    except:
                         continue
     
                     calendar = calresource.iCalendar(name)

Modified: CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/method/report_common.py
===================================================================
--- CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/method/report_common.py	2006-08-31 13:58:05 UTC (rev 89)
+++ CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/method/report_common.py	2006-08-31 14:37:16 UTC (rev 90)
@@ -69,27 +69,26 @@
     """
 
     # First check the privilege on this resource
-    d = waitForDeferred(resource.checkAccess(request, privileges))
-    yield d
-    d.getResult()
+    try:
+        d = waitForDeferred(resource.checkAccess(request, privileges))
+        yield d
+        d.getResult()
+    except:
+        yield None
+        return
 
     # When scanning we only go down as far as a calendar collection - not into one
     if resource.isPseudoCalendarCollection():
         resources = [(resource, request_uri)]
-        doJoin = False
     elif not resource.isCollection():
         resources = [(resource, request_uri)]
-        doJoin = False
     else:
         resources = []
         d = waitForDeferred(resource.findCalendarCollections(depth, request, lambda x, y: resources.append((x, y)), privileges = privileges))
         yield d
         d.getResult()
-        doJoin = True
-        
+         
     for calresource, uri in resources:
-        if doJoin:
-            uri = joinURL(request_uri, uri)
         d = waitForDeferred(apply(calresource, uri))
         yield d
         d.getResult()

Modified: CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/method/report_multiget.py
===================================================================
--- CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/method/report_multiget.py	2006-08-31 13:58:05 UTC (rev 89)
+++ CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/method/report_multiget.py	2006-08-31 14:37:16 UTC (rev 90)
@@ -50,7 +50,7 @@
     if not self.isCollection():
         parent = waitForDeferred(self.locateParent(request, request.uri))
         yield parent
-        parent = parent.getresult()
+        parent = parent.getResult()
         if not parent.isPseudoCalendarCollection():
             log.err("calendar-multiget report is not allowed on a resource outside of a calendar collection %s" % (self,))
             raise HTTPError(StatusResponse(responsecode.FORBIDDEN, "Must be calendar resource"))

Modified: CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/resource.py
===================================================================
--- CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/resource.py	2006-08-31 13:58:05 UTC (rev 89)
+++ CalendarServer/branches/users/cdaboo/acl-merge/twistedcaldav/resource.py	2006-08-31 14:37:16 UTC (rev 90)
@@ -236,7 +236,6 @@
             if child.isCalendarCollection():
                 callback(child, childpath)
             elif child.isCollection():
-                callback(child, childpath + '/')
                 if depth == 'infinity': 
                     fc = child.findCalendarCollections(depth, request, callback, privileges)
                     fc.addCallback(lambda x: reactor.callLater(0, _getChild))

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20060831/846f4da2/attachment.html


More information about the calendarserver-changes mailing list