Enable LDAPObject subclasses to disable DN normalization in their methods.

This commit is contained in:
Pavel Zuna 2010-03-16 15:11:13 +01:00 committed by Rob Crittenden
parent 671bb9c978
commit 18349dda0f

View File

@ -62,6 +62,7 @@ class LDAPObject(Object):
parent_object = '' parent_object = ''
container_dn = '' container_dn = ''
normalize_dn = True
object_name = 'entry' object_name = 'entry'
object_name_plural = 'entries' object_name_plural = 'entries'
object_class = [] object_class = []
@ -217,7 +218,7 @@ class LDAPCreate(CallbackInterface, crud.Create):
) )
try: try:
ldap.add_entry(dn, entry_attrs) ldap.add_entry(dn, entry_attrs, normalize=self.obj.normalize_dn)
except errors.NotFound: except errors.NotFound:
parent = self.obj.parent_object parent = self.obj.parent_object
if parent: if parent:
@ -234,7 +235,9 @@ class LDAPCreate(CallbackInterface, crud.Create):
) )
try: try:
(dn, entry_attrs) = ldap.get_entry(dn, attrs_list) (dn, entry_attrs) = ldap.get_entry(
dn, attrs_list, normalize=self.obj.normalize_dn
)
except errors.NotFound: except errors.NotFound:
self.obj.handle_not_found(*keys) self.obj.handle_not_found(*keys)
@ -292,7 +295,9 @@ class LDAPRetrieve(LDAPQuery):
dn = callback(self, ldap, dn, attrs_list, *keys, **options) dn = callback(self, ldap, dn, attrs_list, *keys, **options)
try: try:
(dn, entry_attrs) = ldap.get_entry(dn, attrs_list) (dn, entry_attrs) = ldap.get_entry(
dn, attrs_list, normalize=self.obj.normalize_dn
)
except errors.NotFound: except errors.NotFound:
self.obj.handle_not_found(*keys) self.obj.handle_not_found(*keys)
@ -358,7 +363,9 @@ class LDAPUpdate(LDAPQuery, crud.Update):
""" """
if 'addattr' in options: if 'addattr' in options:
try: try:
(dn, old_entry) = ldap.get_entry(dn, attrs_list) (dn, old_entry) = ldap.get_entry(
dn, attrs_list, normalize=self.obj.normalize_dn
)
except errors.NotFound: except errors.NotFound:
self.obj.handle_not_found(*keys) self.obj.handle_not_found(*keys)
attrlist = get_attributes(options['addattr']) attrlist = get_attributes(options['addattr'])
@ -371,12 +378,14 @@ class LDAPUpdate(LDAPQuery, crud.Update):
entry_attrs[attr] = old_entry[attr] entry_attrs[attr] = old_entry[attr]
try: try:
ldap.update_entry(dn, entry_attrs) ldap.update_entry(dn, entry_attrs, normalize=self.obj.normalize_dn)
except errors.NotFound: except errors.NotFound:
self.obj.handle_not_found(*keys) self.obj.handle_not_found(*keys)
try: try:
(dn, entry_attrs) = ldap.get_entry(dn, attrs_list) (dn, entry_attrs) = ldap.get_entry(
dn, attrs_list, normalize=self.obj.normalize_dn
)
except errors.NotFound: except errors.NotFound:
raise errors.MidairCollision( raise errors.MidairCollision(
format=_('the entry was deleted while being modified') format=_('the entry was deleted while being modified')
@ -429,7 +438,10 @@ class LDAPDelete(LDAPQuery):
else: else:
for (dn_, entry_attrs) in subentries: for (dn_, entry_attrs) in subentries:
delete_subtree(dn_) delete_subtree(dn_)
ldap.delete_entry(base_dn) try:
ldap.delete_entry(base_dn, normalize=self.obj.normalize_dn)
except errors.NotFound:
self.obj.handle_not_found(*keys)
delete_subtree(dn) delete_subtree(dn)
@ -546,7 +558,9 @@ class LDAPAddMember(LDAPModMember):
) )
try: try:
(dn, entry_attrs) = ldap.get_entry(dn, attrs_list) (dn, entry_attrs) = ldap.get_entry(
dn, attrs_list, normalize=self.obj.normalize_dn
)
except errors.NotFound: except errors.NotFound:
self.obj.handle_not_found(*keys) self.obj.handle_not_found(*keys)
@ -634,7 +648,9 @@ class LDAPRemoveMember(LDAPModMember):
) )
try: try:
(dn, entry_attrs) = ldap.get_entry(dn, attrs_list) (dn, entry_attrs) = ldap.get_entry(
dn, attrs_list, normalize=self.obj.normalize_dn
)
except errors.NotFound: except errors.NotFound:
self.obj.handle_not_found(*keys) self.obj.handle_not_found(*keys)
@ -723,7 +739,7 @@ class LDAPSearch(CallbackInterface, crud.Search):
filter, attrs_list, base_dn, scope=ldap.SCOPE_ONELEVEL filter, attrs_list, base_dn, scope=ldap.SCOPE_ONELEVEL
) )
except errors.NotFound: except errors.NotFound:
(entries, truncated) = (tuple(), False) (entries, truncated) = ([], False)
for callback in self.POST_CALLBACKS: for callback in self.POST_CALLBACKS:
if hasattr(callback, 'im_self'): if hasattr(callback, 'im_self'):
@ -737,7 +753,7 @@ class LDAPSearch(CallbackInterface, crud.Search):
for e in entries: for e in entries:
e[1]['dn'] = e[0] e[1]['dn'] = e[0]
entries = tuple(e for (dn, e) in entries) entries = [e for (dn, e) in entries]
return dict( return dict(
result=entries, result=entries,