From: <ca...@fi...> - 2003-04-20 16:17:25
|
hi Michael, On Sun, Apr 20, 2003 at 11:54:52AM +0200, Michael Str?der wrote: > 1. Note that your code does not work with OpenLDAP 2.1.x since this version > does stricter error checking on entry data: > > ldap.NAMING_VIOLATION: {'info': "naming attribute 'uid' is not present in > entry", 'desc': 'Naming violation'} > please change the dn to whatever works for you, the problem is not here. > 2. Strictly spoken you are creating an invalid entry with > > entry = make_entry(None) > > The attribute value list of attribute 'description' is simply [ None ] > which is filtered in modifyModlist() to []. But it means that the attribute > is assumed to be existent in the old_entry. Non-existent attributes should > not appear in the entry data at all. > if you state that non-existent attributes should be left out, my standing point is, of course, wrong and all this discussion is a non-sense. then, please note that your code is inconsistent with your affirmation because of the last check ("elif old_value and not new_value"). here you are explicitly checking whether new_value does not exist and then whether the corresponding attribute is non-existent. > Note: The diffing in modifyModlist() loops over new_entry.keys(). Whether > an attribute is present in old_entry is determined by existence of the > attribute type name in the dictionary's keys. > this is the point. None is threated as "null-string" (and then filtered) if found in new_value and as "present" if found in old_value. this is not a problem unless it is the only item of the list (like in my case). indeed "if [None]" evaluates to true, while "if []" evaluates to false. if you filtered also old_value, you would handle perfectly the case of non-existent attributes. the choice is yours. > Ciao, Michael. > ciao :) domenico -----[ Domenico Andreoli, aka cavok --[ http://filibusta.crema.unimi.it/~cavok/gpgkey.asc ---[ 3A0F 2F80 F79C 678A 8936 4FEE 0677 9033 A20E BC50 |