[CalendarServer-changes] [8836] CalendarServer/trunk/twistedcaldav/directory
source_changes at macosforge.org
source_changes at macosforge.org
Sat Mar 10 12:17:43 PST 2012
Revision: 8836
http://trac.macosforge.org/projects/calendarserver/changeset/8836
Author: sagen at apple.com
Date: 2012-03-10 12:17:41 -0800 (Sat, 10 Mar 2012)
Log Message:
-----------
Add filtering for required fields to reduce the number of LDAP records returned.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py
CalendarServer/trunk/twistedcaldav/directory/test/test_ldapdirectory.py
Modified: CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py 2012-03-10 02:35:06 UTC (rev 8835)
+++ CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py 2012-03-10 20:17:41 UTC (rev 8836)
@@ -1125,6 +1125,17 @@
operand = ("|" if operand == "or" else "&")
filterstr = "(%s%s)" % (operand, "".join(converted))
+ if filterstr:
+ # To reduce the amount of records returned, filter out the ones
+ # that don't have (possibly) required attribute values (record
+ # name, guid)
+ additional = []
+ for key in ("recordName", "guid"):
+ if mapping.has_key(key):
+ additional.append("(%s=*)" % (mapping.get(key),))
+ if additional:
+ filterstr = "(&%s%s)" % ("".join(additional), filterstr)
+
return filterstr
Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_ldapdirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_ldapdirectory.py 2012-03-10 02:35:06 UTC (rev 8835)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_ldapdirectory.py 2012-03-10 20:17:41 UTC (rev 8836)
@@ -37,10 +37,12 @@
def test_buildFilter(self):
mapping = {
+ "recordName" : "uid",
"fullName" : "cn",
"emailAddresses" : "mail",
"firstName" : "givenName",
"lastName" : "sn",
+ "guid" : "generateduid",
}
entries = [
@@ -53,7 +55,7 @@
],
"operand" : "or",
"recordType" : None,
- "expected" : "(|(cn=mor*)(mail=mor*)(givenName=mor*)(sn=mor*))"
+ "expected" : "(&(uid=*)(generateduid=*)(|(cn=mor*)(mail=mor*)(givenName=mor*)(sn=mor*)))"
},
{
"fields" : [
@@ -64,7 +66,7 @@
],
"operand" : "or",
"recordType" : None,
- "expected" : "(|(cn=mor\\28*)(mail=*mor\\29*)(givenName=mor\\2a)(sn=mor\\5c*))"
+ "expected" : "(&(uid=*)(generateduid=*)(|(cn=mor\\28*)(mail=*mor\\29*)(givenName=mor\\2a)(sn=mor\\5c*)))"
},
{
"fields" : [
@@ -72,7 +74,7 @@
],
"operand" : "or",
"recordType" : None,
- "expected" : "(cn=mor*)"
+ "expected" : "(&(uid=*)(generateduid=*)(cn=mor*))"
},
{
"fields" : [
@@ -82,7 +84,7 @@
],
"operand" : "and",
"recordType" : None,
- "expected" : "(&(cn=*mor*)(mail=mor))"
+ "expected" : "(&(uid=*)(generateduid=*)(&(cn=*mor*)(mail=mor)))"
},
{
"fields" : [
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120310/e1012d34/attachment.html>
More information about the calendarserver-changes
mailing list