mirror of
https://github.com/univention/univention-corporate-server.git
synced 2025-10-26 11:17:13 +00:00
refactor(udm): Switch to univention.admin.modules._get()
raising an exception and lazy loading modules. Bug #50385
This commit is contained in:
parent
b17e18fe29
commit
f56259d79f
@ -3,7 +3,7 @@ release: "5.0"
|
||||
version: [6]
|
||||
scope: ucs_5.0-0-errata5.0-6
|
||||
src: univention-directory-manager-modules
|
||||
fix: 15.0.25-22
|
||||
fix: 15.0.25-23
|
||||
desc: |
|
||||
This update addresses the following issues:
|
||||
* The Univention Configuration Registry Policy UDM module now has an
|
||||
|
||||
@ -1,3 +1,9 @@
|
||||
univention-directory-manager-modules (15.0.25-23) unstable; urgency=low
|
||||
|
||||
* Bug #50385: Support NS records in DNS reverse zones
|
||||
|
||||
-- Philipp Hahn <hahn@univention.de> Wed, 06 Mar 2024 18:23:48 +0100
|
||||
|
||||
univention-directory-manager-modules (15.0.25-22) unstable; urgency=low
|
||||
|
||||
* Bug #50385: Support NS records in DNS reverse zones
|
||||
|
||||
@ -131,6 +131,7 @@ Depends:
|
||||
${python3:Depends},
|
||||
Breaks:
|
||||
python3-univention-directory-manager (<< 15.0.19-1),
|
||||
ucs-test-framework (<< 10.0.20-49),
|
||||
Replaces:
|
||||
python3-univention-directory-manager (<< 15.0.19-1),
|
||||
Description: UCS - Modules for administration tools
|
||||
|
||||
@ -68,7 +68,7 @@ if [ "$1" = "configure" ] && dpkg --compare-versions "$2" lt-nl "15.0.11-29"; th
|
||||
--append translationLongDescription='"fr_FR" "Définir des drapeaux pour un objet"'
|
||||
fi
|
||||
|
||||
if [ "$1" = "configure" ] && dpkg --compare-versions "$2" lt-nl "15.0.25-22"; then
|
||||
if [ "$1" = "configure" ] && dpkg --compare-versions "$2" lt-nl "15.0.25-23"; then
|
||||
deb-systemd-invoke restart univention-directory-listener.service || true
|
||||
deb-systemd-invoke restart univention-directory-manager-rest.service || true
|
||||
# restart ucs@school importer service if available
|
||||
|
||||
@ -94,13 +94,13 @@ def getDefaultContainer(lo, module):
|
||||
if module == 'dns/':
|
||||
module = 'dns/dns'
|
||||
try:
|
||||
return univention.admin.modules.get(module).object.get_default_containers(lo)[0]
|
||||
return univention.admin.modules._get(module).object.get_default_containers(lo)[0]
|
||||
except IndexError:
|
||||
return None
|
||||
|
||||
|
||||
def getDefaultValue(lo, name, position=None):
|
||||
# type: (univention.admin.uldap.access, str, univention.admin.uldap.position) -> str | None
|
||||
# type: (univention.admin.uldap.access, str, univention.admin.uldap.position | None) -> str | None
|
||||
"""
|
||||
Return the default value for a UDM module.
|
||||
|
||||
|
||||
@ -240,7 +240,7 @@ class simpleLdap(object):
|
||||
log.warning('univention.admin.modules.update() was not called')
|
||||
univention.admin.modules.update()
|
||||
|
||||
m = univention.admin.modules.get(self.module)
|
||||
m = univention.admin.modules._get(self.module)
|
||||
if not hasattr(self, 'mapping'):
|
||||
self.mapping = getattr(m, 'mapping', None) # type: univention.admin.mapping.mapping | None
|
||||
|
||||
@ -1030,7 +1030,7 @@ class simpleLdap(object):
|
||||
log.exception("cancel() failed:")
|
||||
|
||||
def _falsy_boolean_extended_attributes(self, info): # type: (_Properties) -> _Properties
|
||||
m = univention.admin.modules.get(self.module)
|
||||
m = univention.admin.modules._get(self.module)
|
||||
for prop in getattr(m, 'extended_udm_attributes', []):
|
||||
if prop.syntax == 'boolean' and not info.get(prop.name):
|
||||
info[prop.name] = u'0'
|
||||
@ -1108,8 +1108,7 @@ class simpleLdap(object):
|
||||
:param dict changes: A list of changes.
|
||||
:returns: The (modified) list of changes.
|
||||
"""
|
||||
m = univention.admin.modules.get(module.module)
|
||||
assert m is not None
|
||||
m = univention.admin.modules._get(module.module)
|
||||
attrs = getattr(m, 'extended_udm_attributes', None)
|
||||
if attrs:
|
||||
for prop in attrs:
|
||||
@ -1334,7 +1333,7 @@ class simpleLdap(object):
|
||||
log.exception("Post-create: cancel() failed:")
|
||||
try:
|
||||
if self._exists: # add succeeded but _ldap_post_create failed!
|
||||
obj = univention.admin.objects.get(univention.admin.modules.get(self.module), None, self.lo, self.position, self.dn)
|
||||
obj = univention.admin.objects.get(univention.admin.modules._get(self.module), None, self.lo, self.position, self.dn)
|
||||
obj.open()
|
||||
obj.remove()
|
||||
except Exception:
|
||||
@ -1348,7 +1347,7 @@ class simpleLdap(object):
|
||||
|
||||
def _ldap_object_classes_add(self, al):
|
||||
# type: (list[tuple[str, Any]]) -> list[tuple[str, Any]]
|
||||
m = univention.admin.modules.get(self.module)
|
||||
m = univention.admin.modules._get(self.module)
|
||||
# evaluate extended attributes
|
||||
ocs = set() # type: set[str]
|
||||
for prop in getattr(m, 'extended_udm_attributes', []):
|
||||
@ -1446,7 +1445,7 @@ class simpleLdap(object):
|
||||
|
||||
def _fix_app_options(self): # type: () -> None
|
||||
# for objects with objectClass=appObject and appObjectActivated=0 we must set appObjectActivated=1
|
||||
for option, opt in getattr(univention.admin.modules.get(self.module), 'options', {}).items():
|
||||
for option, opt in getattr(univention.admin.modules._get(self.module), 'options', {}).items():
|
||||
if not opt.is_app_option or not self.option_toggled(option) or option not in self.options:
|
||||
continue
|
||||
for pname, prop in self.descriptions.items():
|
||||
@ -1455,7 +1454,7 @@ class simpleLdap(object):
|
||||
|
||||
def _ldap_object_classes(self, ml): # type: (list[tuple]) -> list[tuple]
|
||||
"""Detects the attributes changed in the given modlist, calculates the changes of the object class and appends it to the modlist."""
|
||||
m = univention.admin.modules.get(self.module)
|
||||
m = univention.admin.modules._get(self.module)
|
||||
|
||||
def lowerset(vals):
|
||||
# type: (Iterable[str]) -> set[str]
|
||||
@ -1647,7 +1646,7 @@ class simpleLdap(object):
|
||||
pathlist = []
|
||||
|
||||
log.debug("loadPolicyObject: policy_type: %s", policy_type)
|
||||
policy_module = univention.admin.modules.get(policy_type)
|
||||
policy_module = univention.admin.modules._get(policy_type)
|
||||
|
||||
# overwrite property descriptions
|
||||
univention.admin.ucr_overwrite_properties(policy_module, self.lo)
|
||||
@ -1829,8 +1828,8 @@ class simpleLdap(object):
|
||||
|
||||
:param univention.admin.uldap.access lo: UDM LDAP access object.
|
||||
"""
|
||||
containers = univention.admin.modules.defaultContainers(univention.admin.modules.get_module(cls.module))
|
||||
settings_directory = univention.admin.modules.get_module('settings/directory')
|
||||
containers = univention.admin.modules.defaultContainers(univention.admin.modules._get(cls.module))
|
||||
settings_directory = univention.admin.modules._get('settings/directory')
|
||||
try:
|
||||
default_containers = settings_directory.lookup(None, lo, '', required=True)[0]
|
||||
except univention.admin.uexceptions.noObject:
|
||||
@ -1908,7 +1907,7 @@ class simpleLdap(object):
|
||||
filter_p = cls.unmapped_lookup_filter()
|
||||
# there are instances where the lookup/lookup_filter method of an module handler is called before
|
||||
# univention.admin.modules.update() was performed. (e.g. management/univention-directory-manager-modules/univention-dnsedit)
|
||||
module = univention.admin.modules.get_module(cls.module)
|
||||
module = univention.admin.modules._get(cls.module)
|
||||
filter_p.append_unmapped_filter_string(filter_s, cls.rewrite_filter, module.mapping)
|
||||
return filter_p
|
||||
|
||||
@ -1958,7 +1957,7 @@ class simpleLdap(object):
|
||||
return
|
||||
|
||||
# management/univention-management-console/src/univention/management/console/acl.py does not call univention.admin.modules.update()
|
||||
mod = univention.admin.modules.get_module(cls.module)
|
||||
mod = univention.admin.modules._get(cls.module)
|
||||
property_ = mod.property_descriptions.get(key)
|
||||
|
||||
# map options to corresponding objectClass
|
||||
|
||||
@ -85,11 +85,10 @@ def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=Fa
|
||||
if not superordinate:
|
||||
filter_s = ""
|
||||
base = univention.admin.blocklist.BLOCKLIST_BASE
|
||||
sup = univention.admin.modules.get(superordinate.module) if superordinate else None
|
||||
sup = univention.admin.modules._get(superordinate.module) if superordinate else None
|
||||
res = [] # type: list[univention.admin.handlers.simpleLdap]
|
||||
for childmodule in (sup.childmodules if sup else childmodules):
|
||||
mod = univention.admin.modules.get(childmodule)
|
||||
assert mod is not None
|
||||
mod = univention.admin.modules._get(childmodule)
|
||||
res += mod.lookup(co, lo, filter_s, base, superordinate, scope, unique, required, timeout, sizelimit)
|
||||
return res
|
||||
|
||||
|
||||
@ -358,7 +358,7 @@ class ComputerObject(univention.admin.handlers.simpleComputer, nagios.Support, P
|
||||
def lookup_filter(cls, filter_s=None, lo=None):
|
||||
# type: (str | None, univention.admin.uldap.access | None) -> univention.admin.filter.conjunction
|
||||
lookup_filter_obj = cls.unmapped_lookup_filter()
|
||||
module = univention.admin.modules.get_module(cls.module)
|
||||
module = univention.admin.modules._get(cls.module)
|
||||
# ATTENTION: has its own rewrite function.
|
||||
lookup_filter_obj.append_unmapped_filter_string(filter_s, functools.partial(cls.rewrite_filter, lo=lo), module.mapping)
|
||||
return lookup_filter_obj
|
||||
|
||||
@ -231,7 +231,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
def _ldap_post_move(self, olddn):
|
||||
# type: (str) -> None
|
||||
super(object, self)._ldap_post_move(olddn)
|
||||
settings_module = univention.admin.modules.get('settings/directory')
|
||||
settings_module = univention.admin.modules._get('settings/directory')
|
||||
settings_object = univention.admin.objects.get(settings_module, None, self.lo, position='', dn=self.default_dn)
|
||||
settings_object.open()
|
||||
needs_modify = False
|
||||
|
||||
@ -242,7 +242,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
def _ldap_post_move(self, olddn):
|
||||
# type: (str) -> None
|
||||
super(object, self)._ldap_post_move(olddn)
|
||||
settings_module = univention.admin.modules.get('settings/directory')
|
||||
settings_module = univention.admin.modules._get('settings/directory')
|
||||
settings_object = univention.admin.objects.get(settings_module, None, self.lo, position='', dn=self.default_dn)
|
||||
settings_object.open()
|
||||
for attr in ['dns', 'license', 'computers', 'shares', 'groups', 'printers', 'policies', 'dhcp', 'networks', 'users', 'mail']:
|
||||
|
||||
@ -89,11 +89,10 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
|
||||
def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=False, required=False, timeout=-1, sizelimit=0):
|
||||
# type: (None, univention.admin.uldap.access, str, str, univention.admin.handlers.simpleLdap | None, str, bool, bool, int, int) -> list[univention.admin.handlers.simpleLdap]
|
||||
sup = univention.admin.modules.get(superordinate.module) if superordinate else None
|
||||
sup = univention.admin.modules._get(superordinate.module) if superordinate else None
|
||||
res = [] # type: list[univention.admin.handlers.simpleLdap]
|
||||
for childmodule in (sup.childmodules if sup else childmodules):
|
||||
mod = univention.admin.modules.get(childmodule)
|
||||
assert mod is not None
|
||||
mod = univention.admin.modules._get(childmodule)
|
||||
res += mod.lookup(co, lo, filter_s, base, superordinate, scope, unique, required, timeout, sizelimit)
|
||||
return res
|
||||
|
||||
|
||||
@ -101,11 +101,10 @@ MAP_SEARCH = {
|
||||
|
||||
def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=False, required=False, timeout=-1, sizelimit=0):
|
||||
# type: (None, univention.admin.uldap.access, str, str, univention.admin.handlers.simpleLdap | None, str, bool, bool, int, int) -> list[univention.admin.handlers.simpleLdap]
|
||||
sup = univention.admin.modules.get(superordinate.module) if superordinate else None
|
||||
sup = univention.admin.modules._get(superordinate.module) if superordinate else None
|
||||
res = [] # type: list[univention.admin.handlers.simpleLdap]
|
||||
for childmodule in (sup.childmodules if sup else childmodules):
|
||||
mod = univention.admin.modules.get(childmodule)
|
||||
assert mod is not None
|
||||
mod = univention.admin.modules._get(childmodule)
|
||||
try:
|
||||
attr = MAP_SEARCH[childmodule]
|
||||
except LookupError:
|
||||
|
||||
@ -649,7 +649,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
def _ldap_post_move(self, olddn):
|
||||
# type: (str) -> None
|
||||
super(object, self)._ldap_post_move(olddn)
|
||||
settings_module = univention.admin.modules.get('settings/default')
|
||||
settings_module = univention.admin.modules._get('settings/default')
|
||||
settings_object = univention.admin.objects.get(settings_module, None, self.lo, position='', dn='cn=default,cn=univention,%s' % self.lo.base)
|
||||
settings_object.open()
|
||||
for attr in ['defaultGroup', 'defaultMemberServerGroup', 'defaultClientGroup', 'defaultDomainControllerMBGroup', 'defaultDomainControllerGroup', 'defaultComputerGroup']:
|
||||
@ -756,7 +756,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
return
|
||||
|
||||
grpdn2childgrpdns = {}
|
||||
grp_module = univention.admin.modules.get('groups/group')
|
||||
grp_module = univention.admin.modules._get('groups/group')
|
||||
|
||||
cn = self.info.get('name', 'UNKNOWN')
|
||||
|
||||
|
||||
@ -86,8 +86,7 @@ def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=Fa
|
||||
# type: (None, univention.admin.uldap.access, str, str, univention.admin.handlers.simpleLdap | None, str, bool, bool, int, int) -> list[univention.admin.handlers.simpleLdap]
|
||||
res = [] # type: list[univention.admin.handlers.simpleLdap]
|
||||
for childmodule in childmodules:
|
||||
mod = univention.admin.modules.get(childmodule)
|
||||
assert mod is not None
|
||||
mod = univention.admin.modules._get(childmodule)
|
||||
res += mod.lookup(co, lo, filter_s, base, superordinate, scope, unique, required, timeout, sizelimit)
|
||||
return res
|
||||
|
||||
|
||||
@ -87,8 +87,7 @@ def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=Fa
|
||||
# type: (None, univention.admin.uldap.access, str, str, univention.admin.handlers.simpleLdap | None, str, bool, bool, int, int) -> list[univention.admin.handlers.simpleLdap]
|
||||
res = [] # type: list[univention.admin.handlers.simpleLdap]
|
||||
for childmodule in childmodules:
|
||||
mod = univention.admin.modules.get(childmodule)
|
||||
assert mod is not None
|
||||
mod = univention.admin.modules._get(childmodule)
|
||||
res += mod.lookup(co, lo, filter_s, base, superordinate, scope, unique, required, timeout, sizelimit)
|
||||
return res
|
||||
|
||||
|
||||
@ -222,7 +222,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
def _ldap_post_remove(self):
|
||||
super(object, self)._ldap_post_remove()
|
||||
filter_ = univention.admin.filter.expression('univentionNetworkLink', self.dn, escape=True)
|
||||
for computer in univention.admin.modules.get('computers/computer').lookup(None, self.lo, filter_s=filter_):
|
||||
for computer in univention.admin.modules._get('computers/computer').lookup(None, self.lo, filter_s=filter_):
|
||||
try:
|
||||
self.lo.modify(computer.dn, [('univentionNetworkLink', self.dn.encode('UTF-8'), b'')])
|
||||
except (univention.admin.uexceptions.base, ldap.LDAPError):
|
||||
|
||||
@ -336,7 +336,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
try:
|
||||
compobj = univention.admin.modules.lookup('computers/computer', None, self.lo, scope='base', base=computer)[0]
|
||||
# initialize module of the computer obj for extended attributes
|
||||
compmod = univention.admin.modules.get(compobj.module)
|
||||
compmod = univention.admin.modules._get(compobj.module)
|
||||
if not compmod.initialized:
|
||||
univention.admin.modules.init(self.lo, self.position, compmod)
|
||||
compobj = univention.admin.modules.lookup('computers/computer', None, self.lo, scope='base', base=computer)[0]
|
||||
@ -352,7 +352,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
try:
|
||||
compobj = univention.admin.modules.lookup('computers/computer', None, self.lo, scope='base', base=computer)[0]
|
||||
# initialize module of the computer obj for extended attributes
|
||||
compmod = univention.admin.modules.get(compobj.module)
|
||||
compmod = univention.admin.modules._get(compobj.module)
|
||||
if not compmod.initialized:
|
||||
univention.admin.modules.init(self.lo, self.position, compmod)
|
||||
compobj = univention.admin.modules.lookup('computers/computer', None, self.lo, scope='base', base=computer)[0]
|
||||
@ -371,7 +371,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
if not self.hasChanged('content'):
|
||||
return
|
||||
|
||||
portal_entry_mod = univention.admin.modules.get('settings/portal_entry')
|
||||
portal_entry_mod = univention.admin.modules._get('settings/portal_entry')
|
||||
|
||||
old_content = self.oldinfo.get('content', [])
|
||||
old_entries = [entry for category, entries in old_content for entry in entries]
|
||||
|
||||
@ -78,8 +78,7 @@ def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=Fa
|
||||
# type: (None, univention.admin.uldap.access, str, str, univention.admin.handlers.simpleLdap | None, str, bool, bool, int, int) -> list[univention.admin.handlers.simpleLdap]
|
||||
res = [] # type: list[univention.admin.handlers.simpleLdap]
|
||||
for child in childmodules:
|
||||
mod = univention.admin.modules.get(child)
|
||||
assert mod is not None
|
||||
mod = univention.admin.modules._get(child)
|
||||
res += mod.lookup(co, lo, filter_s, base, superordinate, scope, unique, required, timeout, sizelimit)
|
||||
return res
|
||||
|
||||
|
||||
@ -226,7 +226,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
def _remove_self_from_portal(self, portal_obj):
|
||||
if isinstance(portal_obj, six.string_types):
|
||||
try:
|
||||
portal_mod = univention.admin.modules.get('settings/portal')
|
||||
portal_mod = univention.admin.modules._get('settings/portal')
|
||||
portal_obj = univention.admin.objects.get(portal_mod, None, self.lo, position='', dn=portal_obj)
|
||||
except univention.admin.uexceptions.noObject:
|
||||
# If a settings/portal objects gets removed it removes itself from the 'portal' property of all
|
||||
@ -249,7 +249,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
|
||||
def _add_self_to_portal(self, portal_obj):
|
||||
if isinstance(portal_obj, six.string_types):
|
||||
portal_mod = univention.admin.modules.get('settings/portal')
|
||||
portal_mod = univention.admin.modules._get('settings/portal')
|
||||
portal_obj = univention.admin.objects.get(portal_mod, None, self.lo, position='', dn=portal_obj)
|
||||
|
||||
portal_obj.open()
|
||||
@ -265,7 +265,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
new_content = [[portal_category_dn, [self.dn]]] + old_content
|
||||
if new_content != old_content:
|
||||
try:
|
||||
portal_category_mod = univention.admin.modules.get('settings/portal_category')
|
||||
portal_category_mod = univention.admin.modules._get('settings/portal_category')
|
||||
univention.admin.objects.get(portal_category_mod, None, self.lo, position='', dn=portal_category_dn)
|
||||
except univention.admin.uexceptions.noObject:
|
||||
# if the settings/portal_category object for the category string does not exist anymore create it
|
||||
|
||||
@ -94,8 +94,7 @@ def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=Fa
|
||||
# type: (None, univention.admin.uldap.access,str, str, univention.admin.handlers.simpleLdap | None, str, bool, bool, int, int) -> list[univention.admin.handlers.simpleLdap]
|
||||
res = [] # type: list[univention.admin.handlers.simpleLdap]
|
||||
for child in childmodules:
|
||||
mod = univention.admin.modules.get(child)
|
||||
assert mod is not None
|
||||
mod = univention.admin.modules._get(child)
|
||||
res += mod.lookup(co, lo, filter_s, base, superordinate, scope, unique, required, timeout, sizelimit)
|
||||
return res
|
||||
|
||||
|
||||
@ -223,7 +223,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
): # type: (...) -> None
|
||||
# find the printer uris
|
||||
if not _AVAILABLE_PRINTER_SCHEMAS:
|
||||
printer_uris = univention.admin.modules.get('settings/printeruri').lookup(co, lo, '')
|
||||
printer_uris = univention.admin.modules._get('settings/printeruri').lookup(co, lo, '')
|
||||
for uri in printer_uris:
|
||||
_AVAILABLE_PRINTER_SCHEMAS.extend(uri['printeruri'])
|
||||
|
||||
@ -234,7 +234,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
# find the producer
|
||||
univention.admin.handlers.simpleLdap.open(self)
|
||||
if self['model']:
|
||||
models = univention.admin.modules.get('settings/printermodel').lookup(None, self.lo, filter_format('printerModel="%s*', [self['model']]))
|
||||
models = univention.admin.modules._get('settings/printermodel').lookup(None, self.lo, filter_format('printerModel="%s*', [self['model']]))
|
||||
log.debug("printermodel: %s", models)
|
||||
if not models or len(models) > 1:
|
||||
self['producer'] = []
|
||||
@ -280,7 +280,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
if len(member_list['univentionPrinterGroupMember']) < 2:
|
||||
raise univention.admin.uexceptions.emptyPrinterGroup(_('%(name)s is the last member of the printer group %(group)s. ') % {'name': self.info['name'], 'group': member_list['cn'][0].decode('UTF-8')})
|
||||
|
||||
printergroup_module = univention.admin.modules.get('shares/printergroup')
|
||||
printergroup_module = univention.admin.modules._get('shares/printergroup')
|
||||
for rm_dn in rm_attrib:
|
||||
printergroup_object = univention.admin.objects.get(printergroup_module, None, self.lo, position='', dn=rm_dn)
|
||||
printergroup_object.open()
|
||||
|
||||
@ -131,7 +131,7 @@ class object(univention.admin.handlers.simpleLdap):
|
||||
if len(member_list['univentionPrinterGroupMember']) < 2:
|
||||
raise univention.admin.uexceptions.emptyPrinterGroup(_('%(name)s is the last member of the printer group %(group)s. ') % {'name': self.info['name'], 'group': member_list['cn'][0].decode('UTF-8')})
|
||||
|
||||
printergroup_module = univention.admin.modules.get('shares/printergroup')
|
||||
printergroup_module = univention.admin.modules._get('shares/printergroup')
|
||||
for rm_dn in rm_attrib:
|
||||
printergroup_object = univention.admin.objects.get(printergroup_module, None, self.lo, position='', dn=rm_dn)
|
||||
printergroup_object.open()
|
||||
|
||||
@ -84,7 +84,7 @@ class object(univention.admin.handlers.users.user.object):
|
||||
if lo:
|
||||
dn = lo.whoami()
|
||||
filter_p = univention.admin.filter.parse(filter_format('(&(entryDN=%s))', [dn]))
|
||||
module = univention.admin.modules.get_module(cls.module)
|
||||
module = univention.admin.modules._get(cls.module)
|
||||
filter_p.append_unmapped_filter_string(filter_s, cls.rewrite_filter, module.mapping)
|
||||
return filter_p
|
||||
return super(object, cls).lookup_filter(filter_s, lo)
|
||||
|
||||
@ -699,7 +699,7 @@ def get_primary_group_dn(lo, gid_number): # type: (univention.admin.uldap.acces
|
||||
|
||||
def check_prohibited_username(lo, username): # type: (univention.admin.uldap.access, str) -> None
|
||||
"""check if the username is allowed"""
|
||||
module = univention.admin.modules.get('settings/prohibited_username')
|
||||
module = univention.admin.modules._get('settings/prohibited_username')
|
||||
for prohibited_object in (module.lookup(None, lo, u'') or []):
|
||||
if username in prohibited_object['usernames']:
|
||||
raise univention.admin.uexceptions.prohibitedUsername(username)
|
||||
@ -1250,7 +1250,7 @@ class object(univention.admin.handlers.simpleLdap, PKIIntegration):
|
||||
univention.admin.filter.expression('univentionSharePath', u'%s/' % (sharepath.rstrip(u'/')), escape=True),
|
||||
]),
|
||||
])
|
||||
res = univention.admin.modules.lookup(univention.admin.modules.get('shares/share'), None, self.lo, filter=filter_, scope='domain')
|
||||
res = univention.admin.modules.lookup(univention.admin.modules._get('shares/share'), None, self.lo, filter=filter_, scope='domain')
|
||||
if len(res) == 1:
|
||||
self['homeShare'] = res[0].dn
|
||||
# Py3.9+: self['homeSharePath'] = path.removeprefix(sharepath).lstrip("/")
|
||||
@ -1353,7 +1353,7 @@ class object(univention.admin.handlers.simpleLdap, PKIIntegration):
|
||||
for group in new_groups:
|
||||
self.__rewrite_member_uid(group)
|
||||
|
||||
group_mod = univention.admin.modules.get('groups/group')
|
||||
group_mod = univention.admin.modules._get('groups/group')
|
||||
|
||||
log.debug('users/user: check groups in old_groups')
|
||||
for group in old_groups:
|
||||
@ -1401,7 +1401,7 @@ class object(univention.admin.handlers.simpleLdap, PKIIntegration):
|
||||
|
||||
if configRegistry.is_true("directory/manager/user/primarygroup/update", True):
|
||||
new_uid = self.info.get('username')
|
||||
group_mod = univention.admin.modules.get('groups/group')
|
||||
group_mod = univention.admin.modules._get('groups/group')
|
||||
grpobj = group_mod.object(None, self.lo, self.position, self['primaryGroup'])
|
||||
grpobj.fast_member_add([self.dn], [new_uid])
|
||||
log.debug('users/user: adding to new primaryGroup %s (uid=%s)', self['primaryGroup'], new_uid)
|
||||
@ -1914,7 +1914,7 @@ class object(univention.admin.handlers.simpleLdap, PKIIntegration):
|
||||
# type: (list[tuple[str, Any, Any]]) -> list[tuple[str, Any, Any]]
|
||||
if self.hasChanged('homeShare') or self.hasChanged('homeSharePath'):
|
||||
if self['homeShare']:
|
||||
share_mod = univention.admin.modules.get('shares/share')
|
||||
share_mod = univention.admin.modules._get('shares/share')
|
||||
try:
|
||||
share = share_mod.object(None, self.lo, self.position, self['homeShare'])
|
||||
share.open()
|
||||
@ -2012,7 +2012,7 @@ class object(univention.admin.handlers.simpleLdap, PKIIntegration):
|
||||
super(object, self)._ldap_post_remove()
|
||||
|
||||
for group in self.oldinfo.get('groups', []):
|
||||
groupObject = univention.admin.objects.get(univention.admin.modules.get('groups/group'), self.co, self.lo, self.position, group)
|
||||
groupObject = univention.admin.objects.get(univention.admin.modules._get('groups/group'), self.co, self.lo, self.position, group)
|
||||
groupObject.fast_member_remove([self.dn], [x.decode('UTF-8') for x in self.oldattr.get('uid', [])], ignore_license=True)
|
||||
|
||||
def _move(self, newdn, modify_childs=True, ignore_license=False):
|
||||
|
||||
@ -195,32 +195,20 @@ def get(module):
|
||||
return module # type: ignore[return-value]
|
||||
|
||||
|
||||
@overload
|
||||
def get_module(module):
|
||||
# type: (UdmModule) -> UdmModule
|
||||
pass
|
||||
|
||||
|
||||
@overload
|
||||
def get_module(module):
|
||||
# type: (str) -> UdmModule | None
|
||||
pass
|
||||
|
||||
|
||||
def get_module(module):
|
||||
# type: (UdmName) -> UdmModule | None
|
||||
def _get(module):
|
||||
# type: (UdmModule | str) -> UdmModule
|
||||
"""
|
||||
interim function, must only be used by `univention-directory-manager-modules`!
|
||||
|
||||
.. deprecated :: UCS 4.4
|
||||
Internal function to lazy-load and get |UDM| module.
|
||||
|
||||
:param module: either the name (str) of a module or the module itself.
|
||||
:returns: the module or `None` if no module exists with the requested name.
|
||||
:returns: the module
|
||||
:raises KeyError: if no module exists with the requested name.
|
||||
"""
|
||||
if not modules:
|
||||
log.warning('univention.admin.modules.update() was not called')
|
||||
update()
|
||||
return get(module)
|
||||
if isinstance(module, str):
|
||||
return modules[module]
|
||||
return module
|
||||
|
||||
|
||||
def init(lo, position, module, template_object=None, force_reload=False):
|
||||
@ -242,7 +230,7 @@ def init(lo, position, module, template_object=None, force_reload=False):
|
||||
if module.module == 'users/user':
|
||||
# users/self inherits from users/user leading to errors when not reloading it as well
|
||||
# TODO: remove when droppng Python2.7 support and all super(object, self) calls have been replaced with super()
|
||||
reload_module(univention.admin.modules.get('users/self')) # type: ignore
|
||||
reload_module(univention.admin.modules._get('users/self')) # type: ignore
|
||||
# reset property descriptions to defaults if possible
|
||||
if hasattr(module, 'default_property_descriptions'):
|
||||
module.property_descriptions = copy.deepcopy(module.default_property_descriptions)
|
||||
|
||||
@ -73,7 +73,7 @@ def get_superordinate(module, co, lo, dn):
|
||||
attr = lo.get(dn)
|
||||
modules = {univention.admin.modules.name(x) for x in univention.admin.modules.identify(dn, attr)} & super_modules
|
||||
if modules:
|
||||
super_module = univention.admin.modules.get(list(modules)[0]) # noqa: RUF015
|
||||
super_module = univention.admin.modules._get(list(modules)[0]) # noqa: RUF015
|
||||
return get(super_module, co, lo, None, dn)
|
||||
dn = lo.parentDn(dn)
|
||||
|
||||
@ -137,7 +137,7 @@ def default(module, co, lo, position):
|
||||
:param position: |UDM| position instance.
|
||||
:returns: An initialized |UDM| object.
|
||||
"""
|
||||
module = univention.admin.modules.get(module)
|
||||
module = univention.admin.modules._get(module)
|
||||
object = module.object(co, lo, position)
|
||||
for name, property in module.property_descriptions.items():
|
||||
default = property.default(object)
|
||||
@ -290,7 +290,7 @@ def replacePolicyReference(object, policy_type, new_reference):
|
||||
"""
|
||||
# FIXME: Move this to handlers.simpleLdap?
|
||||
|
||||
module = univention.admin.modules.get(policy_type)
|
||||
module = univention.admin.modules._get(policy_type)
|
||||
if not univention.admin.modules.recognize(module, new_reference, object.lo.get(new_reference)):
|
||||
log.debug('replacePolicyReference: error.')
|
||||
return
|
||||
@ -310,8 +310,9 @@ def restorePolicyReference(object, policy_type):
|
||||
:param policy_type: Name of the |UDM| policy to lookup.
|
||||
"""
|
||||
# FIXME: Move this to handlers.simpleLdap?
|
||||
module = univention.admin.modules.get(policy_type)
|
||||
if not module:
|
||||
try:
|
||||
module = univention.admin.modules._get(policy_type)
|
||||
except LookupError:
|
||||
return
|
||||
|
||||
removePolicyReference(object, policy_type)
|
||||
@ -337,7 +338,7 @@ def wantsCleanup(object):
|
||||
wantsCleanup = False
|
||||
|
||||
object_module = module(object)
|
||||
object_module = univention.admin.modules.get(object_module)
|
||||
object_module = univention.admin.modules._get(object_module)
|
||||
if hasattr(object_module, 'docleanup'):
|
||||
wantsCleanup = object_module.docleanup
|
||||
|
||||
|
||||
@ -853,8 +853,9 @@ class UDM_Objects(ISyntax, _UDMObjectOrAttribute):
|
||||
return result
|
||||
|
||||
for udm_module in cls.udm_modules:
|
||||
module = univention.admin.modules.get(udm_module)
|
||||
if not module:
|
||||
try:
|
||||
module = univention.admin.modules._get(udm_module)
|
||||
except LookupError:
|
||||
continue
|
||||
filter_s = cls._create_ldap_filter(options, module)
|
||||
if filter_s is not None:
|
||||
@ -862,8 +863,9 @@ class UDM_Objects(ISyntax, _UDMObjectOrAttribute):
|
||||
choices.extend(map_choices(objs))
|
||||
else:
|
||||
for udm_module in cls.udm_modules:
|
||||
module = univention.admin.modules.get(udm_module)
|
||||
if not module:
|
||||
try:
|
||||
module = univention.admin.modules._get(udm_module)
|
||||
except LookupError:
|
||||
continue
|
||||
filter_s = cls._create_ldap_filter(options, module)
|
||||
if filter_s is not None:
|
||||
@ -996,8 +998,9 @@ class UDM_Attribute(ISyntax, _UDMObjectOrAttribute):
|
||||
return _choices
|
||||
return [(x, x) for x in values]
|
||||
|
||||
module = univention.admin.modules.get(cls.udm_module)
|
||||
if not module:
|
||||
try:
|
||||
module = univention.admin.modules._get(cls.udm_module)
|
||||
except LookupError:
|
||||
return []
|
||||
|
||||
log.debug('Found syntax %s with udm_module property', cls.name)
|
||||
@ -5873,7 +5876,7 @@ class allModuleOptions(combobox):
|
||||
return cls.sort_choices([
|
||||
(key, opt.short_description)
|
||||
for module in modules
|
||||
for key, opt in getattr(univention.admin.modules.get(module), 'options', {}).items()
|
||||
for key, opt in getattr(univention.admin.modules._get(module), 'options', {}).items()
|
||||
if key != 'default'
|
||||
])
|
||||
|
||||
|
||||
@ -543,8 +543,9 @@ def _doit(
|
||||
|
||||
log.debug("using %s account", binddn)
|
||||
|
||||
module = univention.admin.modules.get(module_name)
|
||||
if not module:
|
||||
try:
|
||||
module = univention.admin.modules._get(module_name)
|
||||
except LookupError:
|
||||
print("unknown module %s." % module_name, file=stderr)
|
||||
print("", file=stderr)
|
||||
list_available_modules(stderr)
|
||||
@ -569,7 +570,7 @@ def _doit(
|
||||
|
||||
# initialise modules
|
||||
if module_name == 'settings/usertemplate':
|
||||
univention.admin.modules.init(lo, position, univention.admin.modules.get('users/user'))
|
||||
univention.admin.modules.init(lo, position, univention.admin.modules._get('users/user'))
|
||||
univention.admin.modules.init(lo, position, module)
|
||||
|
||||
information = module_information(module)
|
||||
@ -998,8 +999,8 @@ class CLI(object):
|
||||
print('', file=self.stdout)
|
||||
|
||||
if module_name == 'dhcp/host':
|
||||
subnet_module = univention.admin.modules.get('dhcp/subnet')
|
||||
# TODO: sharedsubnet_module = univention.admin.modules.get('dhcp/sharedsubnet')
|
||||
subnet_module = univention.admin.modules._get('dhcp/subnet')
|
||||
# TODO: sharedsubnet_module = univention.admin.modules._get('dhcp/sharedsubnet')
|
||||
ips = object['fixedaddress']
|
||||
for ip in ips:
|
||||
ip_ = IPv4Address(u"%s" % (ip,))
|
||||
|
||||
@ -103,7 +103,7 @@ def doit(arglist):
|
||||
dn = lo.searchDn(filter=filter_format(u'(&(uid=%s)(|(objectClass=posixAccount)(objectClass=sambaSamAccount)(objectClass=person)))', [user]), base=baseDN, unique=True)
|
||||
position = univention.admin.uldap.position(baseDN)
|
||||
|
||||
module = univention.admin.modules.get('users/user')
|
||||
module = univention.admin.modules._get('users/user')
|
||||
univention.admin.modules.init(lo, position, module)
|
||||
|
||||
object = univention.admin.objects.get(module, None, lo, position=position, dn=dn[0])
|
||||
@ -138,7 +138,7 @@ def doit(arglist):
|
||||
lo = univention.admin.uldap.access(lo=univention.uldap.getRootDnConnection())
|
||||
dn = lo.searchDn(filter=filter_format(u'(&(uid=%s)(|(objectClass=posixAccount)(objectClass=sambaSamAccount)(objectClass=person)))', [user]), base=baseDN, unique=True)
|
||||
position = univention.admin.uldap.position(baseDN)
|
||||
module = univention.admin.modules.get('users/user')
|
||||
module = univention.admin.modules._get('users/user')
|
||||
univention.admin.modules.init(lo, position, module)
|
||||
|
||||
object = univention.admin.objects.get(module, None, lo, position=position, dn=dn[0])
|
||||
|
||||
@ -680,8 +680,9 @@ class GenericModule(with_metaclass(GenericModuleMeta, BaseModule)):
|
||||
if key not in self._udm_module_cache:
|
||||
if self.name not in [k[3] for k in self._udm_module_cache.keys()]:
|
||||
univention.admin.modules.update()
|
||||
udm_module = univention.admin.modules.get(self.name)
|
||||
if not udm_module:
|
||||
try:
|
||||
udm_module = univention.admin.modules._get(self.name)
|
||||
except LookupError:
|
||||
raise UnknownModuleType(
|
||||
msg='UDM module {!r} does not exist.'.format(self.name),
|
||||
module_name=self.name,
|
||||
|
||||
@ -85,7 +85,7 @@ def lock(userdn, lock_timestamp): # type: (str, str) -> None
|
||||
except Exception:
|
||||
lo, pos = univention.admin.uldap.getMachineConnection()
|
||||
|
||||
module = univention.admin.modules.get('users/user')
|
||||
module = univention.admin.modules._get('users/user')
|
||||
|
||||
univention.admin.modules.init(lo, pos, module)
|
||||
|
||||
|
||||
@ -60,7 +60,7 @@ def change(username, password): # type: (str, str) -> None
|
||||
except Exception:
|
||||
lo, pos = univention.admin.uldap.getMachineConnection()
|
||||
|
||||
module = univention.admin.modules.get('users/user')
|
||||
module = univention.admin.modules._get('users/user')
|
||||
|
||||
univention.admin.modules.init(lo, pos, module)
|
||||
|
||||
|
||||
@ -61,10 +61,10 @@ def main():
|
||||
configRegistry.load()
|
||||
|
||||
lo, _position = univention.admin.uldap.getAdminConnection()
|
||||
forward_module = univention.admin.modules.get('dns/forward_zone')
|
||||
forward_module = univention.admin.modules._get('dns/forward_zone')
|
||||
forward_zones = univention.admin.modules.lookup(forward_module, None, lo, scope='sub', superordinate=None, base=configRegistry.get('ldap_base'))
|
||||
|
||||
srv_module = univention.admin.modules.get('dns/srv_record')
|
||||
srv_module = univention.admin.modules._get('dns/srv_record')
|
||||
for forward_zone in forward_zones:
|
||||
srv_records = univention.admin.modules.lookup(srv_module, None, lo, scope='sub', superordinate=forward_zone, base=configRegistry.get('ldap_base'))
|
||||
|
||||
|
||||
@ -103,7 +103,7 @@ def main():
|
||||
|
||||
univention.admin.modules.update()
|
||||
lo, position = get_ldap_connection(basedn)
|
||||
grp_module = univention.admin.modules.get('groups/group')
|
||||
grp_module = univention.admin.modules._get('groups/group')
|
||||
univention.admin.modules.init(lo, position, grp_module)
|
||||
|
||||
recursionCnt = 0
|
||||
|
||||
@ -254,7 +254,7 @@ def test_udm_filter(module, property, udm_filter, expected_filter):
|
||||
|
||||
def check_expected_filter(module, property, udm_filter, expected_filter):
|
||||
expected_filter = BASE_FILTERS[module] % expected_filter
|
||||
mod = univention.admin.modules.get(module)
|
||||
mod = univention.admin.modules._get(module)
|
||||
mod.property_descriptions[property]
|
||||
actual_filter = mod.lookup_filter(udm_filter, None)
|
||||
assert expected_filter == str(actual_filter)
|
||||
|
||||
@ -1,3 +1,9 @@
|
||||
ucs-test (10.0.20-49) unstable; urgency=low
|
||||
|
||||
* Bug #50385: Rename univention.admin.modules.{get_modules -> _get}
|
||||
|
||||
-- Philipp Hahn <hahn@univention.de> Wed, 06 Mar 2024 18:25:11 +0100
|
||||
|
||||
ucs-test (10.0.20-48) unstable; urgency=medium
|
||||
|
||||
* Bug #57072: Make tests cope with mixed case ldap base in udm group members
|
||||
@ -10,7 +16,6 @@ ucs-test (10.0.20-47) unstable; urgency=medium
|
||||
|
||||
-- Felix Botner <botner@univention.de> Mon, 04 Mar 2024 15:48:19 +0100
|
||||
|
||||
|
||||
ucs-test (10.0.20-46) unstable; urgency=medium
|
||||
|
||||
* Bug #56521: test fetchmail listener resync
|
||||
|
||||
@ -52,6 +52,7 @@ Depends:
|
||||
python3-selenium,
|
||||
python3-typing-extensions,
|
||||
python3-univention,
|
||||
python3-univention-directory-manager (>= 15.0.25-23),
|
||||
python3-yaml,
|
||||
ucs-test-modules-all | ucs-test-module,
|
||||
univention-config,
|
||||
|
||||
@ -369,7 +369,7 @@ class UCSTestUDM:
|
||||
|
||||
def create_with_defaults(self, modulename: str, **kwargs: Any) -> Tuple[str, dict]:
|
||||
"""Create any object with as maximum as possible prefilled random default values"""
|
||||
module = univention.admin.modules.get_module(modulename)
|
||||
module = univention.admin.modules._get(modulename)
|
||||
# TODO: cache objects
|
||||
|
||||
if 'position' not in kwargs and not modulename.startswith('settings/portal'):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user