[CalendarServer-changes] [3437] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Tue Dec 2 09:42:14 PST 2008
Revision: 3437
http://trac.macosforge.org/projects/calendarserver/changeset/3437
Author: sagen at apple.com
Date: 2008-12-02 09:42:14 -0800 (Tue, 02 Dec 2008)
Log Message:
-----------
Adds expanded-group-member-set property, and no longer expands group-member-set property
Modified Paths:
--------------
CalendarServer/trunk/conf/auth/accounts-test.xml
CalendarServer/trunk/twistedcaldav/customxml.py
CalendarServer/trunk/twistedcaldav/directory/principal.py
CalendarServer/trunk/twistedcaldav/resource.py
Modified: CalendarServer/trunk/conf/auth/accounts-test.xml
===================================================================
--- CalendarServer/trunk/conf/auth/accounts-test.xml 2008-12-02 17:37:22 UTC (rev 3436)
+++ CalendarServer/trunk/conf/auth/accounts-test.xml 2008-12-02 17:42:14 UTC (rev 3437)
@@ -92,4 +92,35 @@
</members>
<disable-calendar/>
</group>
+ <group>
+ <uid>subgroup1</uid>
+ <guid>subgroup1</guid>
+ <password>subgroup1</password>
+ <name>Sub Group 1</name>
+ <members>
+ <member type="users">user10</member>
+ <member type="users">user11</member>
+ </members>
+ </group>
+ <group>
+ <uid>subgroup2</uid>
+ <guid>subgroup2</guid>
+ <password>subgroup2</password>
+ <name>Sub Group 2</name>
+ <members>
+ <member type="users">user12</member>
+ <member type="users">user13</member>
+ </members>
+ </group>
+ <group>
+ <uid>toplevelgroup</uid>
+ <guid>toplevelgroup</guid>
+ <password>toplevelgroup</password>
+ <name>Top Level Group</name>
+ <members>
+ <member type="groups">subgroup1</member>
+ <member type="groups">subgroup2</member>
+ <member type="users">user14</member>
+ </members>
+ </group>
</accounts>
Modified: CalendarServer/trunk/twistedcaldav/customxml.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/customxml.py 2008-12-02 17:37:22 UTC (rev 3436)
+++ CalendarServer/trunk/twistedcaldav/customxml.py 2008-12-02 17:42:14 UTC (rev 3437)
@@ -350,6 +350,17 @@
allowed_children = { (calendarserver_namespace, "email-address"): (0, None) }
+class ExpandedGroupMemberSet (davxml.WebDAVElement):
+ """
+ The expanded list of members of a (group) principal
+ """
+ namespace = calendarserver_namespace
+ name = "expanded-group-member-set"
+ 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-02 17:37:22 UTC (rev 3436)
+++ CalendarServer/trunk/twistedcaldav/directory/principal.py 2008-12-02 17:42:14 UTC (rev 3437)
@@ -554,7 +554,7 @@
def url(self):
return self.principalURL()
- def _getRelatives(self, method, record=None, relatives=None, records=None, proxy=None):
+ def _getRelatives(self, method, record=None, relatives=None, records=None, proxy=None, infinity=False):
if record is None:
record = self.record
if relatives is None:
@@ -577,21 +577,26 @@
found = found.getChild("calendar-proxy-read")
relatives.add(found)
- self._getRelatives(method, relative, relatives, records)
+ if infinity:
+ self._getRelatives(method, relative, relatives, records,
+ infinity=infinity)
return relatives
def groupMembers(self):
return succeed(self._getRelatives("members"))
+ def expandedGroupMembers(self):
+ return succeed(self._getRelatives("members", infinity=True))
+
@inlineCallbacks
def groupMemberships(self):
- groups = self._getRelatives("groups")
+ groups = self._getRelatives("groups", infinity=True)
if config.EnableProxyPrincipals:
# Get any directory specified proxies
- groups.update(self._getRelatives("proxyFor", proxy='read-write'))
- groups.update(self._getRelatives("readOnlyProxyFor", proxy='read-only'))
+ groups.update(self._getRelatives("proxyFor", proxy='read-write', infinity=True))
+ groups.update(self._getRelatives("readOnlyProxyFor", proxy='read-only', infinity=True))
# Get proxy group UIDs and map to principal resources
proxies = []
@@ -610,7 +615,7 @@
proxyFors = set()
if resolve_memberships:
- memberships = self._getRelatives("groups")
+ memberships = self._getRelatives("groups", infinity=True)
for membership in memberships:
results = (yield membership.proxyFor(read_write, False))
proxyFors.update(results)
@@ -618,9 +623,9 @@
if config.EnableProxyPrincipals:
# Get any directory specified proxies
if read_write:
- directoryProxies = self._getRelatives("proxyFor", proxy='read-write')
+ directoryProxies = self._getRelatives("proxyFor", proxy='read-write', infinity=True)
else:
- directoryProxies = self._getRelatives("readOnlyProxyFor", proxy='read-only')
+ directoryProxies = self._getRelatives("readOnlyProxyFor", proxy='read-only', infinity=True)
proxyFors.update([subprincipal.parent for subprincipal in directoryProxies])
# Get proxy group UIDs and map to principal resources
@@ -750,10 +755,10 @@
return False
def proxies(self):
- return self._getRelatives("proxies")
+ return self._getRelatives("proxies", infinity=True)
def readOnlyProxies(self):
- return self._getRelatives("readOnlyProxies")
+ return self._getRelatives("readOnlyProxies", infinity=True)
def hasEditableProxyMembership(self):
return self.record.hasEditableProxyMembership()
Modified: CalendarServer/trunk/twistedcaldav/resource.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/resource.py 2008-12-02 17:37:22 UTC (rev 3436)
+++ CalendarServer/trunk/twistedcaldav/resource.py 2008-12-02 17:42:14 UTC (rev 3437)
@@ -700,6 +700,7 @@
(calendarserver_namespace, "email-address-set"),
(calendarserver_namespace, "calendar-proxy-read-for" ),
(calendarserver_namespace, "calendar-proxy-write-for" ),
+ (calendarserver_namespace, "expanded-group-member-set"),
)
@classmethod
@@ -789,12 +790,22 @@
*[davxml.HRef(principal.principalURL()) for principal in results]
))
+ elif name == "expanded-group-member-set":
+ principals = (yield self.expandedGroupMembers())
+ returnValue(customxml.ExpandedGroupMemberSet(
+ *[davxml.HRef(p.principalURL()) for p in principals]
+ ))
+
+
result = (yield super(CalendarPrincipalResource, self).readProperty(property, request))
returnValue(result)
def groupMembers(self):
return succeed(())
+ def expandedGroupMembers(self):
+ return succeed(())
+
def groupMemberships(self):
return succeed(())
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20081202/1581d37c/attachment.html>
More information about the calendarserver-changes
mailing list