mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Keep original name when setting attribute in LDAPEntry.
Reviewed-By: Tomas Babej <tbabej@redhat.com>
This commit is contained in:
committed by
Petr Viktorin
parent
a8dd7aa337
commit
9814b272af
@@ -808,41 +808,28 @@ class LDAPEntry(collections.MutableMapping):
|
||||
|
||||
def _add_attr_name(self, name):
|
||||
if name in self._names:
|
||||
oldname = self._names[name]
|
||||
return self._names[name]
|
||||
|
||||
if oldname != name:
|
||||
for (altname, keyname) in self._names.iteritems():
|
||||
if keyname == oldname:
|
||||
self._names[altname] = 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._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
|
||||
|
||||
self._names[name] = name
|
||||
for oldname in self._orig.keys():
|
||||
if self._names.get(oldname) == name:
|
||||
self._orig[name] = self._orig.pop(oldname)
|
||||
break
|
||||
|
||||
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
|
||||
|
||||
@@ -188,11 +188,11 @@ class test_LDAPEntry(object):
|
||||
e = self.entry
|
||||
e['commonName'] = self.cn2
|
||||
assert u'cn' in e
|
||||
assert u'cn' not in e.keys()
|
||||
assert u'cn' in e.keys()
|
||||
assert 'CN' in e
|
||||
assert 'CN' not in e.keys()
|
||||
assert 'commonName' in e
|
||||
assert 'commonName' in e.keys()
|
||||
assert 'commonName' not in e.keys()
|
||||
assert e['CN'] is self.cn2
|
||||
assert e['CN'] is e[u'cn']
|
||||
|
||||
|
||||
Reference in New Issue
Block a user