2015-04-12 6 views

Répondre

0

Pour les modifications d'attributs, vous devez utiliser le DirContextAdapter, comme décrit dans reference documentation. La section qui s'applique à votre exigence serait la section 3.2.2 (Mise à jour); Pour supprimer une valeur d'attribut, vous devez utiliser removeAttributeValue.

0

Il y a trois modes:

  • MOD_ADD: Ceci est utilisé pour ajouter une valeur d'attribut. Si l'attribut existe déjà (et que le schéma autorise plusieurs valeurs), la nouvelle valeur sera ajoutée et l'ancienne valeur restera.
  • MOD_DELETE: La valeur de l'attribut sera supprimée, si elle existe.
  • MOD_REPLACE: Les valeurs d'attribut données remplaceront toutes les autres valeurs pour ce nom d'attribut. En d'autres termes, toutes les anciennes valeurs de l'attribut seront supprimées, puis cette valeur sera ajoutée.

vous devriez utiliser MOD_REPLACE

>>> mod_attrs = [ (ldap.MOD_DELETE, 'cn','Francis Bacon') ] 
>>> l.modify_s('uid=francis,ou=users,dc=example,dc=com', mod_attrs) 
(103, []) 
>>> 

Cela supprimera uniquement la valeur de l'attribut Francis Bacon de l'attribut cn. Si une telle valeur n'existe pas, une exception NO_SUCH_ATTRIBUTE sera déclenchée. Sinon, la valeur sera rejetée.

source: https://www.packtpub.com/books/content/python-ldap-applications-part-3-more-ldap-operations-and-ldap-url-library

0

Si vous ne connaissez pas la valeur du champ puis utilisez Aucun comme valeur comme celui-ci (en prenant exemple de @Anouar Mokhtari):

mod_attrs = [ (ldap.MOD_DELETE, 'cn', None) ] 
l.modify_s('uid=francis,ou=users,dc=example,dc=com', mod_attrs)