[python-ldap] modifyModlist : are old and new values get compared somehow ?
Benjamin Dauvergne
bdauvergne at entrouvert.com
Mon Nov 30 07:10:00 EST 2015
Le 11/30, mh at ow2.org a écrit :
> Hi,
>
> In the following code,
>
> old = {'attr':['oldvalue']}
> new = {'attr':['newvalue']}
>
> mod = modlist.modifyModlist(old,new)
>
> l.modify_s(dn,mod)
>
>
> I'm not sure to fully understand the documentation ; it seems the new
> attribute value is modified in all case - whatever the value stored in
> old attr ; in this case what's the point in specifying an 'oldvalue' ?
As LDAP is a multivalued database i.e. each attribute can have multiple values, what's computed by
modifyModlist is a "diff": remove old values, add new values. If you want to keep some old
values because for example the schema forbid a value to be missing (and between the DELETE and the
ADD there will be a time where no value is defined) you have create your modlist yourself such as:
l.modify_s(dn, [(ldap.MOD_REPLACE, attr, ['newvalue'])])
modlist.modifyModlist is just an helper function to build such change lists, possible value for the
action are:
- ldap.MOD_ADD
- ldap.MOD_DELETE
- ldap.MOD_REPLACE
- ldap.MOD_INCREMENT
--
Benjamin Dauvergne - Tel Entrouvert: 01 43 35 01 35 - Tel perso: 01 84 16 24 53
More information about the python-ldap
mailing list