[CalendarServer-changes] [3908] CalendarServer/branches/users/sagen/directory-cache-on-demand-3897/ twistedcaldav/directory/cachingappleopendirectory.py
source_changes at macosforge.org
source_changes at macosforge.org
Fri Mar 20 17:21:16 PDT 2009
Revision: 3908
http://trac.macosforge.org/projects/calendarserver/changeset/3908
Author: sagen at apple.com
Date: 2009-03-20 17:21:16 -0700 (Fri, 20 Mar 2009)
Log Message:
-----------
Missed some code when combining trunk changes with on-demand branch
Modified Paths:
--------------
CalendarServer/branches/users/sagen/directory-cache-on-demand-3897/twistedcaldav/directory/cachingappleopendirectory.py
Modified: CalendarServer/branches/users/sagen/directory-cache-on-demand-3897/twistedcaldav/directory/cachingappleopendirectory.py
===================================================================
--- CalendarServer/branches/users/sagen/directory-cache-on-demand-3897/twistedcaldav/directory/cachingappleopendirectory.py 2009-03-20 20:11:49 UTC (rev 3907)
+++ CalendarServer/branches/users/sagen/directory-cache-on-demand-3897/twistedcaldav/directory/cachingappleopendirectory.py 2009-03-21 00:21:16 UTC (rev 3908)
@@ -352,7 +352,19 @@
},
}
+ _toODRecordTypes = {
+ DirectoryService.recordType_users :
+ dsattributes.kDSStdRecordTypeUsers,
+ DirectoryService.recordType_locations :
+ dsattributes.kDSStdRecordTypePlaces,
+ DirectoryService.recordType_groups :
+ dsattributes.kDSStdRecordTypeGroups,
+ DirectoryService.recordType_resources :
+ dsattributes.kDSStdRecordTypeResources,
+ }
+ _fromODRecordTypes = dict([(b, a) for a, b in _toODRecordTypes.iteritems()])
+
def recordsMatchingFields(self, fields, operand="or", recordType=None):
# Note that OD applies case-sensitivity globally across the entire
@@ -381,16 +393,9 @@
ODField = self._ODFields[field]['odField']
excluded = excluded | self._ODFields[field]['excludes']
- _ODTypes = {
- self.recordType_users: dsattributes.kDSStdRecordTypeUsers,
- self.recordType_locations: dsattributes.kDSStdRecordTypePlaces,
- self.recordType_groups: dsattributes.kDSStdRecordTypeGroups,
- self.recordType_resources: dsattributes.kDSStdRecordTypeResources,
- }
-
if recordType is None:
# The client is looking for records in any of the four types
- recordTypes = set(_ODTypes.values())
+ recordTypes = set(self._toODRecordTypes.values())
# Certain query combinations yield invalid results. In particular,
# any time you query on EMailAddress and are specifying Places
@@ -404,14 +409,14 @@
# The client is after only one recordType, so let's tailor the
# query to not include any fields OD has trouble with:
excludeFields = True
- recordTypes = [_ODTypes[recordType]]
+ recordTypes = [self._toODRecordTypes[recordType]]
expressions = []
for field, value, caseless, matchType in fields:
if field in self._ODFields:
if (excludeFields and
- _ODTypes[recordType] in self._ODFields[field]['excludes']):
+ self._toODRecordTypes[recordType] in self._ODFields[field]['excludes']):
# This is a field we're excluding because it behaves badly
# for the record type result we're looking for. Skip it.
continue
@@ -541,6 +546,9 @@
# Now get useful record info.
recordGUID = value.get(dsattributes.kDS1AttrGeneratedUID)
recordShortNames = _uniqueTupleFromAttribute(value.get(dsattributes.kDSNAttrRecordName))
+ recordType = value.get(dsattributes.kDSNAttrRecordType)
+ if isinstance(recordType, list):
+ recordType = recordType[0]
recordAuthIDs = _setFromAttribute(value.get(dsattributes.kDSNAttrAltSecurityIdentities))
recordFullName = value.get(dsattributes.kDS1AttrDistinguishedName)
recordFirstName = value.get(dsattributes.kDS1AttrFirstName)
@@ -548,6 +556,13 @@
recordEmailAddresses = _setFromAttribute(value.get(dsattributes.kDSNAttrEMailAddress), lower=True)
recordNodeName = value.get(dsattributes.kDSNAttrMetaNodeLocation)
+ if not recordType:
+ self.log_debug("Record (unknown)%s in node %s has no recordType; ignoring."
+ % (recordShortName, recordNodeName))
+ continue
+
+ recordType = self._fromODRecordTypes[recordType]
+
if not recordGUID:
self.log_debug("Record (%s)%s in node %s has no GUID; ignoring."
% (recordType, recordShortName, recordNodeName))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090320/b344e5a7/attachment.html>
More information about the calendarserver-changes
mailing list