def ldap_search(filter, base=None, attr=None): """Replaces uldaps search and uses a generator. !! Arguments are not the same.""" if base is None: base = base_dn() msgid = uldap().lo.lo.search( base, ldap_module().SCOPE_SUBTREE, filterstr=filter, attrlist=attr ) # I used to have a try: finally: here but there seems to be a bug in python # which swallows the KeyboardInterrupt # The abandon now doesn't make too much sense while True: result_type, result_data = uldap().lo.lo.result(msgid, all=0) if not result_data: break if result_type is ldap_module().RES_SEARCH_RESULT: # pragma: no cover break else: if result_type is ldap_module().RES_SEARCH_ENTRY: for res in result_data: yield res uldap().lo.lo.abandon(msgid)
def umc_module_for_edit(module, object_dn, superordinate=None): """Returns an UMC module object prepared for editing an existing entry. The module is a module specification according to the udm commandline. Example values are: * users/user * shares/share * groups/group The object_dn MUST be the dn of the object itself, not the container! """ mod = module_by_name(module) objects = get_umc_admin_objects() position = position_base_dn() position.setDn(ldap_dn_tree_parent(object_dn)) obj = objects.get( mod, config(), uldap(), position=position, superordinate=superordinate, dn=object_dn ) obj.open() return obj
def umc_module_for_add(module, container_dn, superordinate=None): """Returns an UMC module object prepared for creating a new entry. The module is a module specification according to the udm commandline. Example values are: * users/user * shares/share * groups/group The container_dn MUST be the dn of the container (not of the object to be created itself!). """ mod = module_by_name(module) position = position_base_dn() position.setDn(container_dn) # config, ldap objects from common module obj = mod.object(config(), uldap(), position, superordinate=superordinate) obj.open() return obj
def construct(): import univention.admin.modules init_modules() module = univention.admin.modules.get(module_name_) univention.admin.modules.init(uldap(), position_base_dn(), module) return module