[CalendarServer-changes] [908]
CalendarServer/branches/users/cdaboo/new-schema-904/twistedcaldav/
directory/appleopendirectory.py
source_changes at macosforge.org
source_changes at macosforge.org
Wed Jan 3 19:21:21 PST 2007
Revision: 908
http://trac.macosforge.org/projects/calendarserver/changeset/908
Author: cdaboo at apple.com
Date: 2007-01-03 19:21:21 -0800 (Wed, 03 Jan 2007)
Log Message:
-----------
Update to new PyOpenDirectory api.
Modified Paths:
--------------
CalendarServer/branches/users/cdaboo/new-schema-904/twistedcaldav/directory/appleopendirectory.py
Modified: CalendarServer/branches/users/cdaboo/new-schema-904/twistedcaldav/directory/appleopendirectory.py
===================================================================
--- CalendarServer/branches/users/cdaboo/new-schema-904/twistedcaldav/directory/appleopendirectory.py 2007-01-04 03:15:42 UTC (rev 907)
+++ CalendarServer/branches/users/cdaboo/new-schema-904/twistedcaldav/directory/appleopendirectory.py 2007-01-04 03:21:21 UTC (rev 908)
@@ -84,30 +84,37 @@
if recordType not in self._records:
log.msg("Reloading %s record cache" % (recordType,))
+ attrs = [
+ dsattributes.kDS1AttrGeneratedUID,
+ dsattributes.kDS1AttrDistinguishedName,
+ ]
if recordType == "user":
- listRecords = opendirectory.listUsers
+ listRecordType = dsattributes.kDSStdRecordTypeUsers
elif recordType == "group":
- listRecords = opendirectory.listGroups
+ listRecordType = dsattributes.kDSStdRecordTypeGroups
+ attrs += [dsattributes.kDSNAttrGroupMembers,]
elif recordType == "resource":
- listRecords = opendirectory.listResources
+ listRecordType = dsattributes.kDSStdRecordTypeResources
else:
raise UnknownRecordTypeError("Unknown Open Directory record type: %s" % (recordType,))
records = {}
- for shortName, guid, lastModified, principalURI in listRecords(self.directory):
+ try:
+ results = opendirectory.listAllRecordsWithAttributes(self.directory, listRecordType, attrs)
+ except opendirectory.ODError, ex:
+ log.msg("OpenDirectory error: %s", str(ex))
+ raise
+
+ for (key, value) in results.iteritems():
+ shortName = key
+ guid = value.get(dsattributes.kDS1AttrGeneratedUID)
if not guid:
continue
+ realName = value.get(dsattributes.kDS1AttrDistinguishedName)
- # FIXME: This is a second directory lookup; we should have gotten everything in one pass...
if recordType == "group":
- result = opendirectory.listGroupsWithAttributes(self.directory, [shortName])
- if result is None or shortName not in result:
- log.err("Group %s exists and then doesn't." % (shortName,))
- continue
- result = result[shortName]
-
- memberGUIDs = result.get(dsattributes.attrGroupMembers, None)
+ memberGUIDs = value.get(dsattributes.kDSNAttrGroupMembers)
if memberGUIDs is None:
memberGUIDs = ()
elif type(memberGUIDs) is str:
@@ -120,7 +127,7 @@
recordType = recordType,
guid = guid,
shortName = shortName,
- fullName = None, # FIXME: Need to get this attribute
+ fullName = realName,
calendarUserAddresses = set(), # FIXME: Should be able to look up email, etc.
memberGUIDs = memberGUIDs,
)
@@ -145,41 +152,6 @@
def recordWithShortName(self, recordType, shortName):
return self._cacheRecords(recordType).get(shortName, None)
-# def recordWithShortName(self, recordType, shortName):
-# if recordType == "user":
-# listRecords = opendirectory.listUsersWithAttributes
-# elif recordType == "group":
-# listRecords = opendirectory.listGroupsWithAttributes
-# elif recordType == "resource":
-# listRecords = opendirectory.listResourcesWithAttributes
-# else:
-# raise UnknownRecordTypeError("Unknown record type: %s" % (recordType,))
-#
-# result = listRecords(self.directory, [shortName])
-# if result is None or shortName not in result:
-# return None
-# else:
-# result = result[shortName]
-#
-# if dsattributes.attrGUID in result:
-# guid = result[dsattributes.attrGUID]
-# else:
-# raise DirectoryError("Found OpenDirectory record %s of type %s with no GUID attribute"
-# % (shortName, recordType))
-#
-# if dsattributes.attrRealName in result:
-# fullName = result[dsattributes.attrRealName]
-# else:
-# fullName = None
-#
-# return OpenDirectoryRecord(
-# service = self,
-# recordType = recordType,
-# guid = guid,
-# shortName = shortName,
-# fullName = fullName,
-# )
-
class OpenDirectoryRecord(DirectoryRecord):
"""
Open Directory implementation of L{IDirectoryRecord}.
@@ -213,7 +185,7 @@
def verifyCredentials(self, credentials):
if isinstance(credentials, UsernamePassword):
- return opendirectory.authenticateUser(self.service.directory, self.shortName, credentials.password)
+ return opendirectory.authenticateUserBasic(self.service.directory, self.shortName, credentials.password)
return super(OpenDirectoryRecord, self).verifyCredentials(credentials)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070103/1a4c4fb1/attachment.html
More information about the calendarserver-changes
mailing list