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

source_changes at macosforge.org source_changes at macosforge.org
Mon Nov 20 20:11:46 PST 2006


Revision: 531
          http://trac.macosforge.org/projects/calendarserver/changeset/531
Author:   cdaboo at apple.com
Date:     2006-11-20 20:11:45 -0800 (Mon, 20 Nov 2006)

Log Message:
-----------
List records must return an actual directory record not a short name.

Modified Paths:
--------------
    CalendarServer/branches/users/wsanchez/provisioning-2/twistedcaldav/directory/apache.py
    CalendarServer/branches/users/wsanchez/provisioning-2/twistedcaldav/directory/sqldb.py
    CalendarServer/branches/users/wsanchez/provisioning-2/twistedcaldav/directory/xmlfile.py

Modified: CalendarServer/branches/users/wsanchez/provisioning-2/twistedcaldav/directory/apache.py
===================================================================
--- CalendarServer/branches/users/wsanchez/provisioning-2/twistedcaldav/directory/apache.py	2006-11-21 04:09:56 UTC (rev 530)
+++ CalendarServer/branches/users/wsanchez/provisioning-2/twistedcaldav/directory/apache.py	2006-11-21 04:11:45 UTC (rev 531)
@@ -59,8 +59,26 @@
 
     def listRecords(self, recordType):
         for entryShortName, entryData in self.entriesForRecordType(recordType):
-            yield entryShortName
+            if recordType == "user":
+                yield self.userRecordClass(
+                    service       = self,
+                    recordType    = recordType,
+                    shortName     = entryShortName,
+                    cryptPassword = entryData,
+                )
 
+            if recordType == "group":
+                yield GroupRecord(
+                    service    = self,
+                    recordType = recordType,
+                    shortName  = entryShortName,
+                    members    = entryData,
+                )
+
+            # Subclass should cover the remaining record types
+            raise AssertionError("Subclass should have handled record type: %r"
+                                 % (recordType,))
+
     def recordWithShortName(self, recordType, shortName):
         for entryShortName, entryData in self.entriesForRecordType(recordType):
             if entryShortName == shortName:

Modified: CalendarServer/branches/users/wsanchez/provisioning-2/twistedcaldav/directory/sqldb.py
===================================================================
--- CalendarServer/branches/users/wsanchez/provisioning-2/twistedcaldav/directory/sqldb.py	2006-11-21 04:09:56 UTC (rev 530)
+++ CalendarServer/branches/users/wsanchez/provisioning-2/twistedcaldav/directory/sqldb.py	2006-11-21 04:11:45 UTC (rev 531)
@@ -82,6 +82,27 @@
 
     def listRecords(self, recordType):
         return self._db_values_for_sql("select UID from ACCOUNTS where TYPE = :1", recordType)
+        # Get each account record
+        rowiter = self._db_execute("select UID, PSWD, NAME from ACCOUNTS where TYPE = :1", recordType)
+        for row in rowiter:
+            uid = row[0]
+            pswd = row[1]
+            name = row[2]
+            members = []
+            groups = []
+    
+            # See if we have a group
+            if recordType == "group":
+                rowiter = self._db_execute("select UID from GROUPS where GRPUID = :1", uid)
+                for row in rowiter:
+                    members.append(row[0])
+                
+            # See if we are a member of a group
+            rowiter = self._db_execute("select GRPUID from GROUPS where UID = :1", uid)
+            for row in rowiter:
+                groups.append(row[0])
+                
+            yield uid, pswd, name, members, groups
 
     def getRecord(self, recordType, uid):
         # Get individual account record
@@ -231,8 +252,16 @@
         return recordTypes
 
     def listRecords(self, recordType):
-        for name in self.manager.listRecords(recordType):
-            yield name
+        for result in self.manager.listRecords(recordType):
+            yield SQLDirectoryRecord(
+                service       = self,
+                recordType    = recordType,
+                shortName     = result[0],
+                pswd          = result[1],
+                name          = result[2],
+                members       = result[3],
+                groups        = result[4],
+            )
 
     def recordWithShortName(self, recordType, shortName):
         result = self.manager.getRecord(recordType, shortName)

Modified: CalendarServer/branches/users/wsanchez/provisioning-2/twistedcaldav/directory/xmlfile.py
===================================================================
--- CalendarServer/branches/users/wsanchez/provisioning-2/twistedcaldav/directory/xmlfile.py	2006-11-21 04:09:56 UTC (rev 530)
+++ CalendarServer/branches/users/wsanchez/provisioning-2/twistedcaldav/directory/xmlfile.py	2006-11-21 04:11:45 UTC (rev 531)
@@ -53,7 +53,12 @@
 
     def listRecords(self, recordType):
         for entryShortName, xmlprincipal in self._entriesForRecordType(recordType):
-            yield entryShortName
+            yield XMLDirectoryRecord(
+                service       = self,
+                recordType    = recordType,
+                shortName     = entryShortName,
+                xmlPrincipal  = xmlprincipal,
+            )
 
     def recordWithShortName(self, recordType, shortName):
         for entryShortName, xmlprincipal in self._entriesForRecordType(recordType):

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


More information about the calendarserver-changes mailing list