[CalendarServer-changes] [11604] CalendarServer/trunk/twistedcaldav/directory
source_changes at macosforge.org
source_changes at macosforge.org
Wed Aug 14 11:44:04 PDT 2013
Revision: 11604
http://trac.calendarserver.org//changeset/11604
Author: sagen at apple.com
Date: 2013-08-14 11:44:04 -0700 (Wed, 14 Aug 2013)
Log Message:
-----------
Allow extra LDAP filters in the plist to be applied to calendarserver-principal-search
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 2013-08-13 23:37:38 UTC (rev 11603)
+++ CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py 2013-08-14 18:44:04 UTC (rev 11604)
@@ -1106,8 +1106,9 @@
typeCounts[recordType] = 0
base = self.typeDNs[recordType]
scope = ldap.SCOPE_SUBTREE
+ extraFilter = self.rdnSchema[recordType]["filter"]
filterstr = buildFilterFromTokens(recordType, self.rdnSchema[recordType]["mapping"],
- tokens)
+ tokens, extra=extraFilter)
if filterstr is not None:
# Query the LDAP server
@@ -1428,7 +1429,7 @@
return filterstr
-def buildFilterFromTokens(recordType, mapping, tokens):
+def buildFilterFromTokens(recordType, mapping, tokens, extra=None):
"""
Create an LDAP filter string from a list of query tokens. Each token is
searched for in each LDAP attribute corresponding to "fullName" and
@@ -1439,6 +1440,8 @@
@type mapping: C{dict}
@param tokens: The list of tokens to search for
@type tokens: C{list}
+ @param extra: Extra filter to "and" into the final filter
+ @type extra: C{str} or None
@return: An LDAP filterstr
@rtype: C{str}
"""
@@ -1467,6 +1470,8 @@
return None
tokenFragments = []
+ if extra:
+ tokenFragments.append(extra)
for token in tokens:
fragments = []
Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_ldapdirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_ldapdirectory.py 2013-08-13 23:37:38 UTC (rev 11603)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_ldapdirectory.py 2013-08-14 18:44:04 UTC (rev 11604)
@@ -207,7 +207,8 @@
"fullName" : "cn",
"emailAddresses" : "mail",
},
- "expected" : "(|(cn=*foo*)(mail=foo*))",
+ "expected" : "(&(a=b)(|(cn=*foo*)(mail=foo*)))",
+ "extra" : "(a=b)",
},
{
"tokens" : ["foo"],
@@ -215,7 +216,8 @@
"fullName" : "cn",
"emailAddresses" : ["mail", "mailAliases"],
},
- "expected" : "(|(cn=*foo*)(mail=foo*)(mailAliases=foo*))",
+ "expected" : "(&(a=b)(|(cn=*foo*)(mail=foo*)(mailAliases=foo*)))",
+ "extra" : "(a=b)",
},
{
"tokens" : [],
@@ -224,11 +226,13 @@
"emailAddresses" : "mail",
},
"expected" : None,
+ "extra" : None,
},
{
"tokens" : ["foo", "bar"],
"mapping" : { },
"expected" : None,
+ "extra" : None,
},
{
"tokens" : ["foo", "bar"],
@@ -236,6 +240,7 @@
"emailAddresses" : "mail",
},
"expected" : "(&(mail=foo*)(mail=bar*))",
+ "extra" : None,
},
{
"tokens" : ["foo", "bar"],
@@ -244,6 +249,7 @@
"emailAddresses" : "mail",
},
"expected" : "(&(|(cn=*foo*)(mail=foo*))(|(cn=*bar*)(mail=bar*)))",
+ "extra" : None,
},
{
"tokens" : ["foo", "bar"],
@@ -252,6 +258,7 @@
"emailAddresses" : ["mail", "mailAliases"],
},
"expected" : "(&(|(cn=*foo*)(mail=foo*)(mailAliases=foo*))(|(cn=*bar*)(mail=bar*)(mailAliases=bar*)))",
+ "extra" : None,
},
{
"tokens" : ["foo", "bar", "baz("],
@@ -260,11 +267,12 @@
"emailAddresses" : "mail",
},
"expected" : "(&(|(cn=*foo*)(mail=foo*))(|(cn=*bar*)(mail=bar*))(|(cn=*baz\\28*)(mail=baz\\28*)))",
+ "extra" : None,
},
]
for entry in entries:
self.assertEquals(
- buildFilterFromTokens(None, entry["mapping"], entry["tokens"]),
+ buildFilterFromTokens(None, entry["mapping"], entry["tokens"], extra=entry["extra"]),
entry["expected"]
)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130814/054c3f7d/attachment-0001.html>
More information about the calendarserver-changes
mailing list