[CalendarServer-changes] [13289] twext/trunk/twext/who/opendirectory/_service.py
source_changes at macosforge.org
source_changes at macosforge.org
Tue Apr 15 15:06:05 PDT 2014
Revision: 13289
http://trac.calendarserver.org//changeset/13289
Author: wsanchez at apple.com
Date: 2014-04-15 15:06:05 -0700 (Tue, 15 Apr 2014)
Log Message:
-----------
Revert to r13280 because NO TESTS grr
Revision Links:
--------------
http://trac.calendarserver.org//changeset/13280
Modified Paths:
--------------
twext/trunk/twext/who/opendirectory/_service.py
Modified: twext/trunk/twext/who/opendirectory/_service.py
===================================================================
--- twext/trunk/twext/who/opendirectory/_service.py 2014-04-15 21:50:44 UTC (rev 13288)
+++ twext/trunk/twext/who/opendirectory/_service.py 2014-04-15 22:06:05 UTC (rev 13289)
@@ -211,7 +211,7 @@
self._node = node
- def _queryStringFromMatchExpression(self, expression):
+ def _queryStringAndRecordTypeFromMatchExpression(self, expression):
"""
Generates an OD query string from a match expression.
@@ -235,12 +235,10 @@
notOp = u""
# if MatchFlags.caseInsensitive not in flags:
- # raise QueryNotSupportedError(
- # "Case sensitive searches are not supported by LDAP"
- # )
+ # raise NotImplementedError("Need to handle case sensitive")
if expression.fieldName is self.fieldName.recordType:
- return (notOp, ODRecordType.fromRecordType(expression.fieldValue))
+ return (notOp, ODRecordType.fromRecordType(expression.fieldValue).value)
if expression.fieldName is self.fieldName.uid:
odAttr = ODAttribute.guid
@@ -266,7 +264,7 @@
)
- def _queryStringFromCompoundExpression(self, expression, recordTypes):
+ def _queryStringAndRecordTypesFromCompoundExpression(self, expression, recordTypes):
"""
Generates an OD query string from a compound expression.
@@ -280,11 +278,11 @@
@rtype: (C{unicode}, set(C{unicode}))
"""
if recordTypes is None:
- recordTypes = set(ODRecordType.iterconstants())
+ recordTypes = set([t.value for t in ODRecordType.iterconstants()])
queryTokens = []
for subExpression in expression.expressions:
- queryToken, subExpRecordTypes = self._queryStringFromExpression(
+ queryToken, subExpRecordTypes = self._queryStringAndRecordTypesFromExpression(
subExpression, recordTypes
)
if subExpRecordTypes:
@@ -319,7 +317,7 @@
return (u"".join(queryTokens), recordTypes)
- def _queryStringFromExpression(self, expression, recordTypes=None):
+ def _queryStringAndRecordTypesFromExpression(self, expression, recordTypes=set([t.value for t in ODRecordType.iterconstants()])):
"""
Converts either a MatchExpression or a CompoundExpression into an LDAP
query string.
@@ -335,12 +333,13 @@
"""
if isinstance(expression, MatchExpression):
- return self._queryStringFromMatchExpression(
+ queryString, recordType = self._queryStringAndRecordTypeFromMatchExpression(
expression
)
+ return (queryString, recordType if recordType else recordTypes)
if isinstance(expression, CompoundExpression):
- return self._queryStringFromCompoundExpression(
+ return self._queryStringAndRecordTypesFromCompoundExpression(
expression, recordTypes
)
@@ -360,19 +359,24 @@
@rtype: L{ODQuery}
"""
- queryString, recordTypes = self._queryStringFromExpression(expression)
+ queryString, recordTypes = self._queryStringAndRecordTypesFromExpression(
+ expression,
+ )
if not recordTypes:
return None
- if queryString:
- matchType = ODMatchType.compound.value
- else:
- matchType = ODMatchType.any.value
+ attributes = [a.value for a in ODAttribute.iterconstants()]
+ maxResults = 0
- query, error = self._buildQuery(
- recordTypes=recordTypes,
- matchType=matchType,
- queryString=queryString,
+ query, error = ODQuery.queryWithNode_forRecordTypes_attribute_matchType_queryValues_returnAttributes_maximumResults_error_(
+ self.node,
+ recordTypes,
+ None,
+ ODMatchType.compound.value if queryString else ODMatchType.any.value,
+ queryString,
+ attributes,
+ maxResults,
+ None
)
if error:
@@ -417,6 +421,9 @@
else:
caseInsensitive = 0x0
+ fetchAttributes = [a.value for a in ODAttribute.iterconstants()]
+ maxResults = 0
+
# For OpenDirectory, use guid for uid:
if expression.fieldName is self.fieldName.uid:
expression.fieldName = self.fieldName.guid
@@ -430,9 +437,11 @@
"recordType argument does not match expression"
)
- recordTypes = ODRecordType.fromRecordType(expression.fieldValue)
+ recordTypes = ODRecordType.fromRecordType(
+ expression.fieldValue
+ ).value
if MatchFlags.NOT in flags:
- recordTypes = None
+ recordTypes = set([t.value for t in ODRecordType.iterconstants()]) - recordTypes
matchType = ODMatchType.any.value
queryAttribute = None
@@ -443,9 +452,9 @@
raise NotImplementedError()
if recordType is None:
- recordTypes = None
+ recordTypes = [t.value for t in ODRecordType.iterconstants()]
else:
- recordTypes = (ODRecordType.fromRecordType(recordType),)
+ recordTypes = ODRecordType.fromRecordType(recordType).value
queryAttribute = ODAttribute.fromFieldName(
expression.fieldName
@@ -458,11 +467,15 @@
else:
queryValue = unicode(expression.fieldValue)
- query, error = self._buildQuery(
- recordTypes=recordTypes,
- matchType=(matchType | caseInsensitive),
- queryAttribute=queryAttribute,
- queryString=queryValue,
+ query, error = ODQuery.queryWithNode_forRecordTypes_attribute_matchType_queryValues_returnAttributes_maximumResults_error_(
+ self.node,
+ recordTypes,
+ queryAttribute,
+ matchType | caseInsensitive,
+ queryValue,
+ fetchAttributes,
+ maxResults,
+ None
)
if error:
@@ -477,39 +490,6 @@
return query
- def _buildQuery(
- self, recordTypes, matchType, queryString, queryAttribute=None
- ):
- if not hasattr(self, "_odQuery"):
- self._odQuery = getattr(
- ODQuery,
- "queryWithNode_"
- "forRecordTypes_"
- "attribute_"
- "matchType_"
- "queryValues_"
- "returnAttributes_"
- "maximumResults_error_"
- )
-
- if not hasattr(self, "_odAttributes"):
- self._odAttributes = [a.value for a in ODAttribute.iterconstants()]
-
- if recordTypes is None:
- recordTypes = ODRecordType.itervalues()
-
- return self._odQuery(
- self.node, # node
- (t.value for t in recordTypes), # record types
- queryAttribute, # attribute
- matchType, # matchType
- queryString, # queryString
- self._odAttributes, # return attributes
- 0, # max results
- None # error
- )
-
-
def _recordsFromQuery(self, query):
"""
Executes a query and generates directory records from it.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140415/75d7bdd4/attachment.html>
More information about the calendarserver-changes
mailing list