Revision: 12756 http://trac.calendarserver.org//changeset/12756 Author: sagen@apple.com Date: 2014-02-26 13:19:21 -0800 (Wed, 26 Feb 2014) Log Message: ----------- Adds members() to opendirectory Modified Paths: -------------- twext/trunk/twext/who/opendirectory/_constants.py twext/trunk/twext/who/opendirectory/_service.py Modified: twext/trunk/twext/who/opendirectory/_constants.py =================================================================== --- twext/trunk/twext/who/opendirectory/_constants.py 2014-02-26 21:17:32 UTC (rev 12755) +++ twext/trunk/twext/who/opendirectory/_constants.py 2014-02-26 21:19:21 UTC (rev 12756) @@ -45,8 +45,15 @@ metaRecordName.description = u"meta record name" metaRecordName.multiValue = False + memberUIDs = NamedConstant() + memberUIDs.description = u"member UIDs (excluding groups)" + memberUIDs.multiValue = True + nestedGroupsUIDs = NamedConstant() + nestedGroupsUIDs.description = u"nested group member UIDs" + nestedGroupsUIDs.multiValue = True + # # OD constants # @@ -159,6 +166,12 @@ metaRecordName = ValueConstant(u"dsAttrTypeStandard:AppleMetaRecordName") metaRecordName.fieldName = FieldName.metaRecordName + groupMembers = ValueConstant(u"dsAttrTypeStandard:GroupMembers") + groupMembers.fieldName = FieldName.memberUIDs + + nestedGroups = ValueConstant(u"dsAttrTypeStandard:NestedGroups") + nestedGroups.fieldName = FieldName.nestedGroupsUIDs + # # Single value fields # AdminLimits = ValueConstant(u"dsAttrTypeStandard:AdminLimits") # AppleAliasData = ValueConstant(u"dsAttrTypeStandard:AppleAliasData") Modified: twext/trunk/twext/who/opendirectory/_service.py =================================================================== --- twext/trunk/twext/who/opendirectory/_service.py 2014-02-26 21:17:32 UTC (rev 12755) +++ twext/trunk/twext/who/opendirectory/_service.py 2014-02-26 21:19:21 UTC (rev 12756) @@ -634,7 +634,7 @@ "GUID field is required.", fields ) - fields[service.fieldName.uid] = unicode(guid) + fields[service.fieldName.uid] = unicode(guid).upper() super(DirectoryRecord, self).__init__(service, fields) self._odRecord = odRecord @@ -720,6 +720,17 @@ + @inlineCallbacks + def members(self): + members = set() + for uid in getattr(self, "memberUIDs", ()): + members.add((yield self.service.recordWithUID(uid))) + for uid in getattr(self, "nestedGroupsUIDs", ()): + members.add((yield self.service.recordWithUID(uid))) + returnValue(members) + + + class NoQOPDigestCredentialFactory(DigestCredentialFactory): """ DigestCredentialFactory without qop, to interop with OD.
participants (1)
-
source_changes@macosforge.org