[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