[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