fix(udm): restore Python 2.7 compatibility

UMC modules running with Python 2.7 will decode JSON objects so that each decoded string is a unicode string.
Given that to the newly introduced `univention.admin.modules._get()` will break, due to explicit only check for `str`.

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/univention/management/console/base.py", line 387, in __error_handling
    six.reraise(etype, exc, etraceback)
  File "/usr/lib/python2.7/dist-packages/univention/management/console/base.py", line 285, in execute
    function.__func__(self, request, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/decorators.py", line 189, in _response
    return function(self, request)
  File "/usr/lib/python2.7/dist-packages/ucsschool/lib/school_umc_ldap_connection.py", line 156, in wrapper_func
    return func(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/licenses/__init__.py", line 1023, in get_license
    self._import_licenses(license_handler, license_file, school)
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/licenses/__init__.py", line 997, in _import_licenses
    import_license(license_handler, license)
  File "/usr/lib/python2.7/dist-packages/univention/bildungslogin/license_import/__init__.py", line 134, in import_license
    license_handler.create(license)
  File "/usr/lib/python2.7/dist-packages/univention/bildungslogin/handlers.py", line 76, in create
    udm_obj = self._licenses_mod.new()
  File "/usr/lib/python2.7/dist-packages/univention/udm/modules/generic.py", line 565, in new
    return self._load_obj('', superordinate)
  File "/usr/lib/python2.7/dist-packages/univention/udm/modules/generic.py", line 768, in _load_obj
    obj._copy_from_udm_obj()
  File "/usr/lib/python2.7/dist-packages/univention/udm/modules/generic.py", line 342, in _copy_from_udm_obj
    self.position = self._udm_module._get_default_object_positions()[0]
  File "/usr/lib/python2.7/dist-packages/univention/udm/modules/generic.py", line 662, in _get_default_object_positions
    default_containers = self._get_default_containers()
  File "/usr/lib/python2.7/dist-packages/univention/udm/modules/generic.py", line 640, in _get_default_containers
    mod = GenericModule('settings/directory', self.connection, 0)
  File "/usr/lib/python2.7/dist-packages/univention/udm/modules/generic.py", line 554, in __init__
    self._orig_udm_module = self._get_orig_udm_module()
  File "/usr/lib/python2.7/dist-packages/univention/udm/modules/generic.py", line 691, in _get_orig_udm_module
    univention.admin.modules.init(self.connection, po, udm_module)
  File "/usr/lib/python2.7/dist-packages/univention/admin/modules.py", line 240, in init
    univention.admin.ucr_overwrite_properties(module, lo)
  File "/usr/lib/python2.7/dist-packages/univention/admin/__init__.py", line 73, in ucr_overwrite_properties
    ucr_prefix = ucr_property_prefix % module.module
AttributeError: 'unicode' object has no attribute 'module'

Fixes: f56259d79
Bug #57146
This commit is contained in:
Florian Best 2024-03-14 09:06:36 +01:00 committed by Philipp Hahn
parent 6e5d14e15c
commit 59e66191f2
3 changed files with 18 additions and 1 deletions

View File

@ -0,0 +1,11 @@
product: ucs
release: "5.0"
version: [6]
scope: ucs_5.0-0-errata5.0-6
src: univention-directory-manager-modules
fix: 15.0.25-26
desc: |
This update addresses the following issues:
* Compatibility with Python 2.7 has been restored, which was broken by
erratum 991.
bug: [57146]

View File

@ -1,3 +1,9 @@
univention-directory-manager-modules (15.0.25-26) unstable; urgency=medium
* Bug #57146: restore Python 2.7 compatibility
-- Florian Best <best@univention.de> Thu, 14 Mar 2024 09:06:16 +0100
univention-directory-manager-modules (15.0.25-25) unstable; urgency=low
* Bug #50385: Fix UDM CLI server start

View File

@ -206,7 +206,7 @@ def _get(module):
"""
if not modules:
update()
if isinstance(module, str):
if isinstance(module, six.string_types):
return modules[module]
return module