Similar to issue #13.
Multivalued LDAP attributes are lists and most of the code which handles
LDAP attributes assumes single string values.
Most applications choose the first value as default if multivalued which is
reasonable behavior.
Example, a multivalued SN creates this issue on update:
Traceback (most recent call last):
File "./sync_ldap.py", line 183, in ?
(config, ldap_context, user_database, google_context, log_config)
= \
File "./sync_ldap.py", line 112, in DoMain
cmd.cmdloop()
File "/usr/lib/python2.4/cmd.py", line 142, in cmdloop
stop = self.onecmd(line)
File "/usr/lib/python2.4/cmd.py", line 219, in onecmd
return func(arg)
File "/root/temp/google-apps-for-your-domain-ldap-sync/commands.py",
line 293, in do_updateUsers
attrlist=attrs)
File "/root/temp/google-apps-for-your-domain-ldap-sync/
ldap_ctxt.py", line 257, in Search
return self.AsyncSearch(filter_arg, sizelimit, attrlist=attrlist)
File "/root/temp/google-apps-for-your-domain-ldap-sync/
ldap_ctxt.py", line 239, in AsyncSearch
return userdb.UserDB(config=self._config, users=users)
File "/root/temp/google-apps-for-your-domain-ldap-sync/userdb.py",
line 304, in __init__
self._AddUsers(users)
File "/root/temp/google-apps-for-your-domain-ldap-sync/userdb.py",
line 1196, in _AddUsers
self.db[dn] = self._MapUser(attrs)
File "/root/temp/google-apps-for-your-domain-ldap-sync/userdb.py",
line 1260, in _MapUser
if ldap_user_xform.MeetsPrereqs(attrs):
File "/root/temp/google-apps-for-your-domain-ldap-sync/
user_transformation_rule.py", line 83, in MeetsPrereqs
self.Mapping(ldap)
File "/root/temp/google-apps-for-your-domain-ldap-sync/
user_transformation_rule.py", line 187, in Mapping
mappings['%sCallback' % attr] = self._TransformAttr(attr, attrs)
File "/root/temp/google-apps-for-your-domain-ldap-sync/
user_transformation_rule.py", line 162, in _TransformAttr
r = eval('self.%s(attrs)' % callback_name)
File "<string>", line 0, in ?
File "/root/temp/google-apps-for-your-domain-ldap-sync/
user_transformation_rule.py", line 116, in GoogleFirstName
return NameSplit(ldap['givenName'], ldap['sn'],
ldap['displayName'])[0]
File "/root/temp/google-apps-for-your-domain-ldap-sync/
user_transformation_rule.py", line 56, in NameSplit
surname_pieces = surname.split()
AttributeError: 'list' object has no attribute 'split'
Original issue reported on code.google.com by david.c....@gmail.com on 17 Jul 2008 at 7:42
Original issue reported on code.google.com by
david.c....@gmail.com
on 17 Jul 2008 at 7:42