[CalendarServer-changes] [481] CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/ directory

source_changes at macosforge.org source_changes at macosforge.org
Wed Nov 15 18:14:24 PST 2006


Revision: 481
          http://trac.macosforge.org/projects/calendarserver/changeset/481
Author:   wsanchez at apple.com
Date:     2006-11-15 18:14:23 -0800 (Wed, 15 Nov 2006)

Log Message:
-----------
Implement recordWithShortName().

Modified Paths:
--------------
    CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/apache.py
    CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/test_apache.py

Modified: CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/apache.py
===================================================================
--- CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/apache.py	2006-11-16 01:52:07 UTC (rev 480)
+++ CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/apache.py	2006-11-16 02:14:23 UTC (rev 481)
@@ -53,6 +53,35 @@
         return recordTypes
 
     def listRecords(self, recordType):
+        for entryShortName, entryData in self._entriesForRecordType(recordType):
+            yield entryShortName
+
+    def recordWithShortName(self, recordType, shortName):
+        for entryShortName, entryData in self._entriesForRecordType(recordType):
+            if entryShortName == shortName:
+                if recordType == "user":
+                    return FileDirectoryRecord(
+                        service       = self,
+                        recordType    = recordType,
+                        shortName     = entryShortName,
+                        cryptPassword = entryData,
+                    )
+                elif recordType == "group":
+                    return FileDirectoryRecord(
+                        service    = self,
+                        recordType = recordType,
+                        shortName  = entryShortName,
+                        members    = entryData,
+                    )
+                else:
+                    raise AssertionError("We shouldn't be here.")
+
+        raise NotImplementedError()
+
+    def recordWithGUID(self, guid):
+        raise NotImplementedError()
+
+    def _entriesForRecordType(self, recordType):
         if recordType == "user":
             recordFile = self.userFile
         elif recordType == "group":
@@ -62,28 +91,27 @@
 
         for entry in recordFile.open():
             if entry and entry[0] != "#":
-                shortName, rest = entry.split(":")
-                yield shortName
+                shortName, rest = entry.split(":", 1)
+                yield shortName, rest
 
-    def recordWithShortName(self, recordType, shortName):
-        raise NotImplementedError()
-
-    def recordWithGUID(self, guid):
-        raise NotImplementedError()
-
 class FileDirectoryRecord(DirectoryRecord):
     """
     Apache UserFile/GroupFile implementation of L{IDirectoryRecord}.
     """
-    def __init__(self):
-        service    = None
-        recordType = None
-        guid       = None
-        shortName  = None
-        fullName   = None
+    def __init__(self, service, recordType, shortName, cryptPassword=None, members=()):
+        if type(members) is str:
+            members = tuple(m.strip() for m in members.split(","))
 
+        self.service        = service
+        self.recordType     = recordType
+        self.guid           = None
+        self.shortName      = shortName
+        self.fullName       = None
+        self._cryptPassword = cryptPassword
+        self._members       = members
+
     def members(self):
-        raise NotImplementedError()
+        return self._members
 
     def group(self):
         raise NotImplementedError()

Modified: CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/test_apache.py
===================================================================
--- CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/test_apache.py	2006-11-16 01:52:07 UTC (rev 480)
+++ CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/test_apache.py	2006-11-16 02:14:23 UTC (rev 481)
@@ -86,8 +86,6 @@
             record = service.recordWithShortName("user", user)
             self.assertEquals(record.shortName, user)
 
-    test_recordWithShortName_user.todo = "unimplemented"
-
     def test_recordWithShortName_group(self):
         """
         FileDirectoryService.recordWithShortName("group")
@@ -97,8 +95,6 @@
             groupRecord = service.recordWithShortName("group", group)
             self.assertEquals(groupRecord.shortName, group)
 
-    test_recordWithShortName_group.todo = "unimplemented"
-
     def test_groupMembers(self):
         """
         FileDirectoryRecord.members()

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20061115/4199eef4/attachment.html


More information about the calendarserver-changes mailing list