Univention Bugzilla – Attachment 8970 Details for
Bug 44422
Improve performance of udm/query command
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
proposed patch
44422_performance.patch (text/plain), 4.07 KB, created by
Jürn Brodersen
on 2017-06-27 12:14 CEST
(
hide
)
Description:
proposed patch
Filename:
MIME Type:
Creator:
Jürn Brodersen
Created:
2017-06-27 12:14 CEST
Size:
4.07 KB
patch
obsolete
>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 80474) >+++ management/univention-directory-manager-modules/modules/univention/admin/handlers/users/user.py (working copy) >@@ -2769,10 +2769,11 @@ > 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): >+ attributes = [ mapping.mapName(attribute) for attribute in attributes ] >+ 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 80474) >+++ 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 80474) >+++ management/univention-management-console-module-udm/umc/python/udm/udm_ldap.py (working copy) >@@ -460,7 +460,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() >@@ -485,7 +485,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:
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
|
Diff
Attachments on
bug 44422
:
8785
| 8970