[CalendarServer-changes] [8853] CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav /directory
source_changes at macosforge.org
source_changes at macosforge.org
Tue Mar 13 12:55:08 PDT 2012
Revision: 8853
http://trac.macosforge.org/projects/calendarserver/changeset/8853
Author: gaya at apple.com
Date: 2012-03-13 12:55:06 -0700 (Tue, 13 Mar 2012)
Log Message:
-----------
fix im type
Modified Paths:
--------------
CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav/directory/ldapdirectorybacker.py
CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav/directory/opendirectorybacker.py
Modified: CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav/directory/ldapdirectorybacker.py
===================================================================
--- CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav/directory/ldapdirectorybacker.py 2012-03-13 19:24:47 UTC (rev 8852)
+++ CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav/directory/ldapdirectorybacker.py 2012-03-13 19:55:06 UTC (rev 8853)
@@ -172,7 +172,7 @@
def createCache(self):
succeed(None)
- #to do: use opendirectorybacker: _attributesForAddressBookQuery
+
def _ldapAttributesForAddressBookQuery(self, addressBookQuery, ldapDSAttrMap ):
etagRequested, propertyNames = propertiesInAddressBookQuery( addressBookQuery )
@@ -221,8 +221,7 @@
ldapDSAttrMap = queryMap["ldapDSAttrMap"]
allRecords, filterAttributes, dsFilter = dsFilterFromAddressBookFilter( addressBookFilter, searchMap );
- #print("allRecords = %s, query = %s" % (allRecords, "None" if dsFilter is None else dsFilter.generate(),))
- self.log_debug("vCardRecordsForAddressBookQuery: queryType = \"%s\" LDAP allRecords = %s, filterAttributes = %s, query = %s" % (queryType, allRecords, filterAttributes, "None" if dsFilter is None else dsFilter.generate(),))
+ self.log_debug("vCardRecordsForAddressBookQuery: queryType=\"%s\" LDAP allRecords=%s, filterAttributes=%s, query=%s" % (queryType, allRecords, filterAttributes, "None" if dsFilter is None else dsFilter.generate(),))
if allRecords:
@@ -234,16 +233,16 @@
if not clear:
queryAttributes = self._ldapAttributesForAddressBookQuery( addressBookQuery, ldapDSAttrMap )
attributes = filterAttributes + queryAttributes if queryAttributes else None
- self.log_debug("vCardRecordsForAddressBookQuery: attributes = %s, queryAttributes = %s" % (attributes, queryAttributes,))
+ self.log_debug("vCardRecordsForAddressBookQuery: attributes=%s, queryAttributes=%s" % (attributes, queryAttributes,))
+ #get all ldap attributes -- for debug
if queryMap.get("getAllAttributes"):
attributes = None
-
rdn = queryMap["rdn"]
base = ldap.dn.str2dn(rdn) + self.base
- #add additonal filter
+ #add additonal filter from config
queryFilter = queryMap.get("filter")
if dsFilter and queryFilter:
filterstr = "(&%s%s)" % (queryFilter, dsFilter.generate())
@@ -252,24 +251,24 @@
elif dsFilter:
filterstr = dsFilter.generate()
- #attrlist = attributes
- #filterstr = "(&(!(objectClass=organizationalUnit))(sn=Gaya))"
- #attrlist = ("cn", "sn", "objectClass", "mail", "telephoneNumber", "appleDSID")
- self.log_debug("LDAP query with base %s and filter %s and attributes %s sizelimit %s" % (ldap.dn.dn2str(base), filterstr, attributes, maxRecords))
+ # can't resist also using a timeout, 1 sec per requested record for now
+ timeout = maxRecords
+
+ self.log_debug("vCardRecordsForAddressBookQuery:LDAP query base=%s and filter=%s and attributes=%s timeout=%s sizelimit=%s" % (ldap.dn.dn2str(base), filterstr, attributes, timeout, maxRecords))
- ldapSearchResult = (yield self.timedSearch(ldap.dn.dn2str(base), ldap.SCOPE_SUBTREE, filterstr=filterstr, attrlist=attributes, timeout=maxRecords, sizelimit=maxRecords))
+ ldapSearchResult = (yield self.timedSearch(ldap.dn.dn2str(base), ldap.SCOPE_SUBTREE, filterstr=filterstr, attrlist=attributes, timeout=timeout, sizelimit=maxRecords))
- self.log_debug("ldapSearchResult=%s" % (ldapSearchResult,))
+ self.log_debug("vCardRecordsForAddressBookQuery: ldapSearchResult=%s" % (ldapSearchResult,))
for dn, ldapAttributes in ldapSearchResult:
#dn = normalizeDNstr(dn)
dsRecord = None
try:
+ # make a dsRecordAttributes dict from the ldap attributes
dsRecordAttributes = {}
-
for ldapAttributeName, ldapAttributeValues in ldapAttributes.iteritems():
- self.log_debug("inspecting ldapAttributeName %s with values %s" % (ldapAttributeName, ldapAttributeValues,))
+ #self.log_debug("inspecting ldapAttributeName %s with values %s" % (ldapAttributeName, ldapAttributeValues,))
# get rid of '' values
ldapAttributeValues = [attr for attr in ldapAttributeValues if len(attr)]
@@ -282,32 +281,32 @@
dsAttributeNames = [dsAttributeNames,]
for dsAttributeName in dsAttributeNames:
-
+
+ # base64 encode binary attributes
if dsAttributeName in VCardRecord.binaryDSAttributeStrs:
ldapAttributeValues = [attr.encode('base64') for attr in ldapAttributeValues]
- # all dsRecordAttributes values are lists
+ # add to dsRecordAttributes
if dsAttributeName not in dsRecordAttributes:
dsRecordAttributes[dsAttributeName] = list()
dsRecordAttributes[dsAttributeName] = list(set(dsRecordAttributes[dsAttributeName] + ldapAttributeValues))
- self.log_debug("dsRecordAttributes[%s] = %s" % (dsAttributeName, dsRecordAttributes[dsAttributeName],))
-
+ self.log_debug("vCardRecordsForAddressBookQuery: dsRecordAttributes[%s] = %s" % (dsAttributeName, dsRecordAttributes[dsAttributeName],))
+
+ # get a record for dsRecordAttributes
dsRecord = VCardRecord(self, dsRecordAttributes, defaultNodeName=None, generateSimpleUIDs=self.generateSimpleUIDs, appleInternalServer=self.appleInternalServer)
vCardText = dsRecord.vCardText()
except:
traceback.print_exc()
self.log_info("Could not get vcard for ds record %s" % (dsRecord,))
else:
- self.log_debug("VCard text =\n%s" % (vCardText, ))
+ self.log_debug("vCardRecordsForAddressBookQuery: VCard text =\n%s" % (vCardText, ))
queryRecords.append(dsRecord)
-
- self.log_info("maxRecords was %s len(ldapSearchResult) %s" % (maxRecords,len(ldapSearchResult),))
+
+ # only get requested number of record results
maxRecords -= len(ldapSearchResult)
- self.log_info("maxRecords now %s len(ldapSearchResult) %s" % (maxRecords,len(ldapSearchResult),))
if maxRecords <= 0:
limited = True
- self.log_info("limited %s" % (limited,))
break
Modified: CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav/directory/opendirectorybacker.py
===================================================================
--- CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav/directory/opendirectorybacker.py 2012-03-13 19:24:47 UTC (rev 8852)
+++ CalendarServer/branches/users/gaya/ldapdirectorybacker/twistedcaldav/directory/opendirectorybacker.py 2012-03-13 19:55:06 UTC (rev 8853)
@@ -1185,7 +1185,8 @@
splitValue = attrValue.split("|")
if len (splitValue) > 1:
attrValue = splitValue[0]
- defaultLabel = splitValue[1]
+ if splitValue[1].upper() in nolabelParamTypes:
+ defaultLabel = splitValue[1]
colonIndex = attrValue.find(":")
if (colonIndex > len(attrValue)-2):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120313/1bf120aa/attachment-0001.html>
More information about the calendarserver-changes
mailing list