[CalendarServer-changes] [413]
CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/
directory/resource.py
source_changes at macosforge.org
source_changes at macosforge.org
Thu Nov 9 15:27:09 PST 2006
Revision: 413
http://trac.macosforge.org/projects/calendarserver/changeset/413
Author: wsanchez at apple.com
Date: 2006-11-09 15:27:08 -0800 (Thu, 09 Nov 2006)
Log Message:
-----------
Implement groupMembers()
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-09 23:26:33 UTC (rev 412)
+++ CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/resource.py 2006-11-09 23:27:08 UTC (rev 413)
@@ -97,13 +97,17 @@
def createSimilarFile(self, path):
raise HTTPError(responsecode.NOT_FOUND)
- def getChild(self, name):
+ def getChild(self, name, record=None):
if name == "":
return self
- record = self.directory.recordWithShortName(self.recordType, name)
if record is None:
- return None
+ record = self.directory.recordWithShortName(self.recordType, name)
+ if record is None:
+ return None
+ else:
+ assert name is None
+ name = record.shortName
child_fp = self.fp.child(name)
if child_fp.exists():
@@ -114,7 +118,7 @@
child_fp.open("w").close()
- return DirectoryPrincipalResource(child_fp.path, self, name)
+ return DirectoryPrincipalResource(child_fp.path, self, record)
def listChildren(self):
return [record.shortName for record in self.directory.listRecords(self.recordType)]
@@ -126,12 +130,10 @@
"""
Directory principal resource.
"""
- def __init__(self, path, parent, name):
+ def __init__(self, path, parent, record):
super(DirectoryPrincipalResource, self).__init__(path, parent.principalCollectionURL())
- self.directory = parent.directory
- self.recordType = parent.recordType
- self.shortName = name
+ self.record = record
self._parent = parent
##
@@ -139,10 +141,15 @@
##
def alternateURIs(self):
+ # FIXME: Add API to IDirectoryRecord for getting a record URI?
return ()
def groupMembers(self):
- raise NotImplementedError("DirectoryPrincipalResource.groupMembers()")
+ 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)
def groupMemberships(self):
raise NotImplementedError("DirectoryPrincipalResource.groupMemberships()")
@@ -155,7 +162,7 @@
##
def principalUID(self):
- return self.shortName
+ return self.record.shortName
def calendarHomeURLs(self):
raise NotImplementedError("DirectoryPrincipalResource.calendarHomeURLs()")
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20061109/63431c16/attachment.html
More information about the calendarserver-changes
mailing list