Revision: 3564 http://trac.macosforge.org/projects/calendarserver/changeset/3564 Author: sagen@apple.com Date: 2008-12-22 10:41:33 -0800 (Mon, 22 Dec 2008) Log Message: ----------- Adds expanded-group-membership property, and makes group-membership property non-expanding Modified Paths: -------------- CalendarServer/trunk/run CalendarServer/trunk/twistedcaldav/customxml.py CalendarServer/trunk/twistedcaldav/directory/principal.py CalendarServer/trunk/twistedcaldav/resource.py Modified: CalendarServer/trunk/run =================================================================== --- CalendarServer/trunk/run 2008-12-22 18:40:44 UTC (rev 3563) +++ CalendarServer/trunk/run 2008-12-22 18:41:33 UTC (rev 3564) @@ -692,7 +692,7 @@ caldavtester="${top}/CalDAVTester"; -svn_get "CalDAVTester" "${caldavtester}" "${svn_uri_base}/CalDAVTester/trunk" 3559; +svn_get "CalDAVTester" "${caldavtester}" "${svn_uri_base}/CalDAVTester/trunk" 3563; # # Calendar Server Modified: CalendarServer/trunk/twistedcaldav/customxml.py =================================================================== --- CalendarServer/trunk/twistedcaldav/customxml.py 2008-12-22 18:40:44 UTC (rev 3563) +++ CalendarServer/trunk/twistedcaldav/customxml.py 2008-12-22 18:41:33 UTC (rev 3564) @@ -385,6 +385,17 @@ allowed_children = { (dav_namespace, "href"): (0, None) } +class ExpandedGroupMembership (davxml.WebDAVElement): + """ + The expanded list of groups a principal is a member of + """ + namespace = calendarserver_namespace + name = "expanded-group-membership" + protected = True + hidden = True + + allowed_children = { (dav_namespace, "href"): (0, None) } + class IScheduleInbox (davxml.WebDAVEmptyElement): """ Denotes the resourcetype of a iSchedule Inbox. Modified: CalendarServer/trunk/twistedcaldav/directory/principal.py =================================================================== --- CalendarServer/trunk/twistedcaldav/directory/principal.py 2008-12-22 18:40:44 UTC (rev 3563) +++ CalendarServer/trunk/twistedcaldav/directory/principal.py 2008-12-22 18:41:33 UTC (rev 3564) @@ -630,13 +630,13 @@ return succeed(self._getRelatives("members", infinity=True)) @inlineCallbacks - def groupMemberships(self): - groups = self._getRelatives("groups", infinity=True) + def groupMemberships(self, infinity=False): + groups = self._getRelatives("groups", infinity=infinity) if config.EnableProxyPrincipals: # Get any directory specified proxies - groups.update(self._getRelatives("proxyFor", proxy='read-write', infinity=True)) - groups.update(self._getRelatives("readOnlyProxyFor", proxy='read-only', infinity=True)) + groups.update(self._getRelatives("proxyFor", proxy='read-write', infinity=infinity)) + groups.update(self._getRelatives("readOnlyProxyFor", proxy='read-only', infinity=infinity)) # Get proxy group UIDs and map to principal resources proxies = [] @@ -650,6 +650,10 @@ returnValue(groups) + def expandedGroupMemberships(self): + return self.groupMemberships(infinity=True) + + @inlineCallbacks def proxyFor(self, read_write, resolve_memberships=True): proxyFors = set() Modified: CalendarServer/trunk/twistedcaldav/resource.py =================================================================== --- CalendarServer/trunk/twistedcaldav/resource.py 2008-12-22 18:40:44 UTC (rev 3563) +++ CalendarServer/trunk/twistedcaldav/resource.py 2008-12-22 18:41:33 UTC (rev 3564) @@ -851,6 +851,7 @@ (calendarserver_namespace, "calendar-proxy-read-for" ), (calendarserver_namespace, "calendar-proxy-write-for" ), (calendarserver_namespace, "expanded-group-member-set"), + (calendarserver_namespace, "expanded-group-membership"), ) @classmethod @@ -946,7 +947,13 @@ *[davxml.HRef(p.principalURL()) for p in principals] )) + elif name == "expanded-group-membership": + principals = (yield self.expandedGroupMemberships()) + returnValue(customxml.ExpandedGroupMembership( + *[davxml.HRef(p.principalURL()) for p in principals] + )) + result = (yield super(CalendarPrincipalResource, self).readProperty(property, request)) returnValue(result)