ldap.modlist.modifyModlist()
Paul Wankadia
junyer at gmail.com
Fri Sep 19 08:21:00 CEST 2008
Hi, Michael.
The current implementation of modifyModlist() clashed with some ACLs
because it touches too many values. :/
Here's a replacement that I hacked together:
def ModifyList(old_attrs, new_attrs):
modify = []
old_keys = set(old_attrs)
new_keys = set(new_attrs)
for attr in old_keys - new_keys:
modify.append((ldap.MOD_DELETE, attr, None))
for attr in new_keys - old_keys:
modify.append((ldap.MOD_ADD, attr, new_attrs[attr]))
for attr in old_keys & new_keys:
old_values = set(old_attrs[attr])
new_values = set(new_attrs[attr])
if len(old_values) == 1 and len(new_values) == 1:
if old_values != new_values:
modify.append((ldap.MOD_REPLACE, attr, list(new_values)))
else:
delta = old_values - new_values
if delta:
modify.append((ldap.MOD_DELETE, attr, list(delta)))
delta = new_values - old_values
if delta:
modify.append((ldap.MOD_ADD, attr, list(delta)))
return modify
Would you be averse to reimplementing modifyModlist() in a similar way?
Thanks for your consideration.
More information about the python-ldap
mailing list