Craig Balfour wrote: > I've just noticed, however, that when the old and new entry consist of > the same characters but in a different order (as occurs when initials > are swapped around, for example) ldap_compare_s() returns > COMPARE_FALSE but modifyModlist() returns an empty list - the result > being that nothing gets updated. > > Here's some examples: > > modlist = ldap.modlist.modifyModlist({"givenName": "Fred"}, {"givenName": > "Bob"}) > print str(modlist) > [(1, 'givenName', None), (0, 'givenName', 'Bob')] > > modlist = ldap.modlist.modifyModlist({"givenName": "Fred"}, {"givenName": > "derF"}) > print str(modlist) > [] > > Is this a bug in modifyModlist() or a feature?
This is a bug in *your* code. ;-) But I also had to look at it twice before recognizing it. Note that an attribute in the entry's dict is made of an attribute type and a *list* of attribute values (strings). You're passing in strings as attribute value lists and the function modifyModlist() iterates over the single chars in the string instead of iterating over the list items (attribute values). So your examples should be (and modifyModlist() works expected): Python 2.5.1 (r251:54863, Aug 3 2007, 00:52:06) [GCC 4.1.2 20061115 (prerelease) (SUSE Linux)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from ldap.modlist import modifyModlist >>> modifyModlist({"givenName": ["Fred"]}, {"givenName": ["Bob"]}) [(1, 'givenName', None), (0, 'givenName', ['Bob'])] >>> modifyModlist({"givenName": ["Fred"]}, {"givenName": ["derF"]}) [(1, 'givenName', None), (0, 'givenName', ['derF'])] >>> Ciao, Michael. ------------------------------------------------------------------------- SF.Net email is sponsored by: Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ Python-LDAP-dev mailing list Python-LDAP-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/python-ldap-dev