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):
|
def _add_attr_name(self, name):
|
||||||
if name in self._names:
|
if name in self._names:
|
||||||
oldname = self._names[name]
|
return self._names[name]
|
||||||
|
|
||||||
if oldname != name:
|
if self._conn.schema is not None:
|
||||||
for (altname, keyname) in self._names.iteritems():
|
attrtype = self._conn.schema.get_obj(
|
||||||
if keyname == oldname:
|
ldap.schema.AttributeType, name.encode('utf-8'))
|
||||||
self._names[altname] = name
|
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._names[name] = name
|
||||||
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
|
||||||
|
|
||||||
for oldname in self._orig.keys():
|
return name
|
||||||
if self._names.get(oldname) == name:
|
|
||||||
self._orig[name] = self._orig.pop(oldname)
|
|
||||||
break
|
|
||||||
|
|
||||||
def _set_nice(self, name, value):
|
def _set_nice(self, name, value):
|
||||||
name = self._attr_name(name)
|
name = self._attr_name(name)
|
||||||
self._add_attr_name(name)
|
name = self._add_attr_name(name)
|
||||||
|
|
||||||
if not isinstance(value, list):
|
if not isinstance(value, list):
|
||||||
if value is None:
|
if value is None:
|
||||||
@@ -872,7 +859,7 @@ class LDAPEntry(collections.MutableMapping):
|
|||||||
raise TypeError("%s[%d] value must be str, got %s object %r" % (
|
raise TypeError("%s[%d] value must be str, got %s object %r" % (
|
||||||
name, i, item.__class__.__name__, item))
|
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:
|
if self._raw.get(name) is not value:
|
||||||
self._raw[name] = value
|
self._raw[name] = value
|
||||||
|
|||||||
@@ -188,11 +188,11 @@ class test_LDAPEntry(object):
|
|||||||
e = self.entry
|
e = self.entry
|
||||||
e['commonName'] = self.cn2
|
e['commonName'] = self.cn2
|
||||||
assert u'cn' in e
|
assert u'cn' in e
|
||||||
assert u'cn' not in e.keys()
|
assert u'cn' in e.keys()
|
||||||
assert 'CN' in e
|
assert 'CN' in e
|
||||||
assert 'CN' not in e.keys()
|
assert 'CN' not in e.keys()
|
||||||
assert 'commonName' in e
|
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 self.cn2
|
||||||
assert e['CN'] is e[u'cn']
|
assert e['CN'] is e[u'cn']
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user