From 9814b272af6ad94aba675fe17de8883f3bb4b509 Mon Sep 17 00:00:00 2001 From: Jan Cholasta Date: Thu, 27 Mar 2014 17:53:13 +0100 Subject: Keep original name when setting attribute in LDAPEntry. Reviewed-By: Tomas Babej --- ipapython/ipaldap.py | 53 ++++++++++++++++++++-------------------------------- 1 file changed, 20 insertions(+), 33 deletions(-) (limited to 'ipapython') diff --git a/ipapython/ipaldap.py b/ipapython/ipaldap.py index 212ff2475..56e7d1384 100644 --- a/ipapython/ipaldap.py +++ b/ipapython/ipaldap.py @@ -808,41 +808,28 @@ class LDAPEntry(collections.MutableMapping): def _add_attr_name(self, name): if name in self._names: - oldname = self._names[name] - - if oldname != name: - for (altname, keyname) in self._names.iteritems(): - if keyname == oldname: - self._names[altname] = name - - self._nice[name] = self._nice.pop(oldname) - self._raw[name] = self._raw.pop(oldname) - if oldname in self._sync: - self._sync[name] = self._sync.pop(oldname) - if oldname in self._not_list: - self._not_list.remove(oldname) - self._not_list.add(name) - if oldname in self._orig: - self._orig[name] = self._orig.pop(oldname) - else: - if self._conn.schema is not None: - attrtype = self._conn.schema.get_obj(ldap.schema.AttributeType, - name.encode('utf-8')) - if attrtype is not None: - for altname in attrtype.names: - altname = altname.decode('utf-8') - self._names[altname] = name - - self._names[name] = name - - for oldname in self._orig.keys(): - if self._names.get(oldname) == name: - self._orig[name] = self._orig.pop(oldname) - break + return self._names[name] + + if self._conn.schema is not None: + attrtype = self._conn.schema.get_obj( + ldap.schema.AttributeType, name.encode('utf-8')) + if attrtype is not None: + for altname in attrtype.names: + altname = altname.decode('utf-8') + self._names[altname] = name + + self._names[name] = name + + for oldname in self._orig.keys(): + if self._names.get(oldname) == name: + self._orig[name] = self._orig.pop(oldname) + break + + return name def _set_nice(self, name, value): name = self._attr_name(name) - self._add_attr_name(name) + name = self._add_attr_name(name) if not isinstance(value, list): if value is None: @@ -872,7 +859,7 @@ class LDAPEntry(collections.MutableMapping): raise TypeError("%s[%d] value must be str, got %s object %r" % ( name, i, item.__class__.__name__, item)) - self._add_attr_name(name) + name = self._add_attr_name(name) if self._raw.get(name) is not value: self._raw[name] = value -- cgit