summaryrefslogtreecommitdiffstats
path: root/ipapython
diff options
context:
space:
mode:
authorJan Cholasta <jcholast@redhat.com>2014-03-27 17:53:13 +0100
committerPetr Viktorin <pviktori@redhat.com>2014-04-18 14:59:21 +0200
commit9814b272af6ad94aba675fe17de8883f3bb4b509 (patch)
tree6e53fe5910485144867ed61557ff4288949e9886 /ipapython
parenta8dd7aa337f25abd938a582d0fcba51d3b356410 (diff)
downloadfreeipa-9814b272af6ad94aba675fe17de8883f3bb4b509.tar.gz
freeipa-9814b272af6ad94aba675fe17de8883f3bb4b509.tar.xz
freeipa-9814b272af6ad94aba675fe17de8883f3bb4b509.zip
Keep original name when setting attribute in LDAPEntry.
Reviewed-By: Tomas Babej <tbabej@redhat.com>
Diffstat (limited to 'ipapython')
-rw-r--r--ipapython/ipaldap.py53
1 files changed, 20 insertions, 33 deletions
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