[CalendarServer-changes] [434]
CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/
directory/resource.py
source_changes at macosforge.org
source_changes at macosforge.org
Fri Nov 10 16:57:53 PST 2006
Revision: 434
http://trac.macosforge.org/projects/calendarserver/changeset/434
Author: wsanchez at apple.com
Date: 2006-11-10 16:57:53 -0800 (Fri, 10 Nov 2006)
Log Message:
-----------
Use common implementation for groupMembers() and groupMemberships().
Modified Paths:
--------------
CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/resource.py
Modified: CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/resource.py
===================================================================
--- CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/resource.py 2006-11-10 23:29:13 UTC (rev 433)
+++ CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/resource.py 2006-11-11 00:57:53 UTC (rev 434)
@@ -86,9 +86,9 @@
# This avoids finding case variants of put children on case-insensitive filesystems.
if name not in self.putChildren and name.lower() in (x.lower() for x in self.putChildren):
return None
+ else:
+ return self.putChildren.get(name, None)
- return super(DirectoryPrincipalProvisioningResource, self).getChild(name)
-
def listChildren(self):
self._initChildren()
return self.putChildren.keys()
@@ -214,15 +214,32 @@
# FIXME: Add API to IDirectoryRecord for getting a record URI?
return ()
+ def _getRelatives(self, method, record=None, relatives=None, records=None):
+ if record is None:
+ record = self.record
+ if relatives is None:
+ relatives = set()
+ if records is None:
+ records = set()
+
+ if record not in records:
+ records.add(record)
+ myRecordType = self.record.recordType
+ for relative in getattr(record, method)():
+ if relative not in records:
+ if relative.recordType == myRecordType:
+ relatives.add(self._parent.getChild(None, record=relative))
+ else:
+ relatives.add(self._parent._parent.getChild(relative.recordType).getChild(None, record=relative))
+ self._getRelatives(method, relative, relatives, records)
+
+ return relatives
+
def groupMembers(self):
- for member in self.record.members():
- if member.recordType == self.record.recordType:
- yield self._parent.getChild(None, record=member)
- else:
- yield self._parent._parent.getChild(member.recordType).getChild(None, record)
+ return self._getRelatives("members")
def groupMemberships(self):
- raise NotImplementedError("DirectoryPrincipalResource.groupMemberships()")
+ return self._getRelatives("groups")
def principalCollections(self, request):
return self._parent.principalCollections(request)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20061110/789f11b8/attachment.html
More information about the calendarserver-changes
mailing list