Revision: 1573 http://trac.macosforge.org/projects/calendarserver/changeset/1573 Author: dreid@apple.com Date: 2007-05-25 15:44:43 -0700 (Fri, 25 May 2007) Log Message: ----------- Check for the apple-serviceinfo attribute first, also use a complex query to get the records containing the virtual host name Modified Paths: -------------- CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py Modified: CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py =================================================================== --- CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py 2007-05-25 17:59:23 UTC (rev 1572) +++ CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py 2007-05-25 22:44:43 UTC (rev 1573) @@ -124,13 +124,22 @@ dsattributes.kDSNAttrRecordName, dsattributes.kDS1AttrXMLPlist, dsattributes.kDSNAttrMetaNodeLocation, + 'dsAttrTypeNative:apple-serviceinfo', ] - records = opendirectory.queryRecordsWithAttribute( + from dsquery import expression, match + + records = opendirectory.queryRecordsWithAttributes( self.directory, - dsattributes.kDS1AttrXMLPlist, - vhostname, - dsattributes.eDSContains, + expression( + expression.OR, + ( + match(dsattributes.kDS1AttrXMLPlist, + vhostname, + dsattributes.eDSContains), + match('dsAttrTypeNative:apple-serviceinfo', + vhostname, + dsattributes.eDSContains))).generate(), True, # case insentive for hostnames dsattributes.kDSStdRecordTypeComputers, attrs @@ -157,11 +166,17 @@ _remoteNode = None for recordname, record in records.iteritems(): - # Must have XMLPlist value - plist = record.get(dsattributes.kDS1AttrXMLPlist, None) + # May have an apple-serviceinfo + plist = record.get('dsAttrTypeNative:apple-serviceinfo', None) + if not plist: - continue + # May have XMLPlist value + plist = record.get(dsattributes.kDS1AttrXMLPlist, None) + # Must have one of the other + if not plist: + continue + # XXX: Parse the plist so we can find only calendar vhosts with our hostname. plistDict = readPlistFromString(plist) vhosts = plistDict.get("com.apple.macosxserver.virtualhosts", None)