Index: management/univention-directory-manager-modules/modules/univention/admin/handlers/users/user.py =================================================================== --- management/univention-directory-manager-modules/modules/univention/admin/handlers/users/user.py (revision 78859) +++ management/univention-directory-manager-modules/modules/univention/admin/handlers/users/user.py (working copy) @@ -2677,10 +2677,10 @@ return lookup_filter_obj -def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=False, required=False, timeout=-1, sizelimit=0): +def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=False, required=False, timeout=-1, sizelimit=0, attributes=[]): filter = lookup_filter(filter_s) res = [] - for dn, attrs in lo.search(unicode(filter), base, scope, [], unique, required, timeout, sizelimit): + for dn, attrs in lo.search(unicode(filter), base, scope, attributes, unique, required, timeout, sizelimit): res.append(object(co, lo, None, dn, attributes=attrs)) return res Index: management/univention-management-console-module-udm/umc/python/udm/__init__.py =================================================================== --- management/univention-management-console-module-udm/umc/python/udm/__init__.py (revision 78859) +++ management/univention-management-console-module-udm/umc/python/udm/__init__.py (working copy) @@ -542,7 +542,7 @@ scope = request.options.get('scope', 'sub') hidden = request.options.get('hidden') fields = (set(request.options.get('fields', []) or []) | set([objectProperty])) - set(['name', 'None']) - result = module.search(container, objectProperty, objectPropertyValue, superordinate, scope=scope, hidden=hidden) + result = module.search(container, objectProperty, objectPropertyValue, superordinate, scope=scope, hidden=hidden, attributes=list(fields)) if result is None: return [] @@ -552,11 +552,6 @@ for obj in result: if obj is None: continue - module = get_module(object_type, obj.dn) - if module is None: - # This happens when concurrent a object is removed between the module.search() and get_module() call - MODULE.warn('LDAP object does not exists %s (flavor: %s). The object is ignored.' % (obj.dn, request.flavor)) - continue entry = { '$dn$': obj.dn, '$childs$': module.childs, Index: management/univention-management-console-module-udm/umc/python/udm/udm_ldap.py =================================================================== --- management/univention-management-console-module-udm/umc/python/udm/udm_ldap.py (revision 78859) +++ management/univention-management-console-module-udm/umc/python/udm/udm_ldap.py (working copy) @@ -448,7 +448,7 @@ UDM_Error(e).reraise() @LDAP_Connection - def search(self, container=None, attribute=None, value=None, superordinate=None, scope='sub', filter='', simple=False, simple_attrs=None, ldap_connection=None, ldap_position=None, hidden=True): + def search(self, container=None, attribute=None, value=None, superordinate=None, scope='sub', filter='', simple=False, simple_attrs=None, ldap_connection=None, ldap_position=None, hidden=True, attributes=[]): """Searches for LDAP objects based on a search pattern""" if container == 'all': container = ldap_position.getBase() @@ -473,7 +473,10 @@ result = ldap_connection.searchDn(filter=unicode(lookup_filter), base=container, scope=scope, sizelimit=sizelimit) else: if self.module: - result = self.module.lookup(None, ldap_connection, filter_s, base=container, superordinate=superordinate, scope=scope, sizelimit=sizelimit) + try: + result = self.module.lookup(None, ldap_connection, filter_s, base=container, superordinate=superordinate, scope=scope, sizelimit=sizelimit, attributes=attributes) + except TypeError: + result = self.module.lookup(None, ldap_connection, filter_s, base=container, superordinate=superordinate, scope=scope, sizelimit=sizelimit) else: result = None except udm_errors.insufficientInformation as e: