[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