diff --git a/management/univention-directory-manager-modules/modules/univention/admin/__init__.py b/management/univention-directory-manager-modules/modules/univention/admin/__init__.py index 66fabe0..17c986a 100644 --- a/management/univention-directory-manager-modules/modules/univention/admin/__init__.py +++ b/management/univention-directory-manager-modules/modules/univention/admin/__init__.py @@ -30,8 +30,7 @@ # /usr/share/common-licenses/AGPL-3; if not, see # . -import copy, types, string, re -import mapping +import types, re, sys import univention.config_registry import univention.debug @@ -471,6 +470,11 @@ def __init__(self, id, short_description=None, long_description='', members=[]): self.long_description=long_description self.members=members +univention.admin = sys.modules[__name__] +from univention.admin import modules, objects, syntax, hook, mapping +syntax.import_syntax_files() +hook.import_hook_files() + if __name__ == '__main__': prop = property( '_replace' ) for pattern in ( '', ' ', '', '<:trim,upper> ', '<:lower> ', '<:umlauts> ' ): diff --git a/management/univention-directory-manager-modules/modules/univention/admin/hook.py b/management/univention-directory-manager-modules/modules/univention/admin/hook.py index 2af83a0..01440bb 100644 --- a/management/univention-directory-manager-modules/modules/univention/admin/hook.py +++ b/management/univention-directory-manager-modules/modules/univention/admin/hook.py @@ -30,16 +30,15 @@ # /usr/share/common-licenses/AGPL-3; if not, see # . -import re, string, types, math, time, operator import univention.debug import univention.admin.modules import univention.admin.uexceptions -import univention.admin.localization -import base64 -import copy -import sys, os +from univention.admin import localization +import sys +import os +import traceback -translation=univention.admin.localization.translation('univention/admin') +translation=localization.translation('univention/admin') _=translation.translate # @@ -53,13 +52,12 @@ def import_hook_files(): if f.endswith('.py'): fn = os.path.join( dir, 'univention/admin/hooks.d/', f ) try: - fd = open( fn, 'r' ) - exec fd in univention.admin.hook.__dict__ + with open(fn, 'r') as fd: + exec fd in sys.modules[__name__].__dict__ univention.debug.debug(univention.debug.ADMIN, univention.debug.INFO, 'admin.syntax.import_hook_files: importing "%s"' % fn) except: univention.debug.debug(univention.debug.ADMIN, univention.debug.ERROR, 'admin.syntax.import_hook_files: loading %s failed' % fn ) - import traceback - univention.debug.debug(univention.debug.ADMIN, univention.debug.INFO, 'admin.syntax.import_hook_files: TRACEBACK:\n%s' % traceback.format_exc() ) + univention.debug.debug(univention.debug.ADMIN, univention.debug.ERROR, 'admin.syntax.import_hook_files: TRACEBACK:\n%s' % traceback.format_exc() ) diff --git a/management/univention-directory-manager-modules/modules/univention/admin/modules.py b/management/univention-directory-manager-modules/modules/univention/admin/modules.py index 0465e6c..38c270e 100644 --- a/management/univention-directory-manager-modules/modules/univention/admin/modules.py +++ b/management/univention-directory-manager-modules/modules/univention/admin/modules.py @@ -43,10 +43,10 @@ import univention.admin.uldap import univention.admin.syntax import univention.admin.hook -import univention.admin.localization +from univention.admin import localization from univention.admin.layout import Tab, Group, ILayoutElement -translation=univention.admin.localization.translation('univention/admin') +translation=localization.translation('univention/admin') _=translation.translate modules={} @@ -978,9 +978,3 @@ def childModules(module_name): module = get(module_name) return copy.deepcopy( getattr(module, 'childmodules', []) ) -univention.admin.syntax.import_syntax_files() -univention.admin.hook.import_hook_files() - -# The update will cause in a recursion, see https://forge.univention.org/bugzilla/show_bug.cgi?id=22439 -# update() - diff --git a/management/univention-directory-manager-modules/modules/univention/admin/syntax.py b/management/univention-directory-manager-modules/modules/univention/admin/syntax.py index 3dd080e..435c09c 100644 --- a/management/univention-directory-manager-modules/modules/univention/admin/syntax.py +++ b/management/univention-directory-manager-modules/modules/univention/admin/syntax.py @@ -38,7 +38,7 @@ import univention.debug import univention.admin.modules import univention.admin.uexceptions -import univention.admin.localization +from univention.admin import localization try: from univention.lib.ucs import UCS_Version from univention.lib.umc_module import get_mime_type, get_mime_description, image_mime_type_of_buffer @@ -58,13 +58,14 @@ import locale from operator import itemgetter -translation=univention.admin.localization.translation('univention/admin') +translation=localization.translation('univention/admin') _=translation.translate # # load all additional syntax files from */site-packages/univention/admin/syntax.d/*.py # def import_syntax_files(): + global _ # don't allow syntax to overwrite our global _ function. gettext = _ for dir_ in sys.path: syntax_py = os.path.join(dir_, 'univention/admin/syntax.py') @@ -75,12 +76,14 @@ def import_syntax_files(): for fn in syntax_files: try: - fd = open( fn, 'r' ) - exec fd in univention.admin.syntax.__dict__ + with open(fn, 'r') as fd: + exec fd in sys.modules[__name__].__dict__ univention.debug.debug(univention.debug.ADMIN, univention.debug.INFO, 'admin.syntax.import_syntax_files: importing "%s"' % fn) except: - univention.debug.debug(univention.debug.ADMIN, univention.debug.INFO, 'admin.syntax.import_syntax_files: loading %s failed' % fn ) - univention.admin.syntax.__dict__['_'] = gettext + univention.debug.debug(univention.debug.ADMIN, univention.debug.ERROR, 'admin.syntax.import_syntax_files: loading %s failed' % fn ) + univention.debug.debug(univention.debug.ADMIN, univention.debug.ERROR, 'admin.syntax.import_syntax_files: TRACEBACK:\n%s' % traceback.format_exc() ) + _ = gettext + _ = gettext choice_update_functions = [] def __register_choice_update_function(func): @@ -3050,7 +3053,7 @@ class Country(select): @classmethod def update_choices(cls): - iso_3166 = univention.admin.localization.translation('iso_3166') + iso_3166 = localization.translation('iso_3166') iso_3166.set_language(str(translation.locale)) _iso_3166 = iso_3166.translate diff --git a/management/univention-directory-manager-modules/modules/univention/admin/uexceptions.py b/management/univention-directory-manager-modules/modules/univention/admin/uexceptions.py index 029d54a..9699954 100644 --- a/management/univention-directory-manager-modules/modules/univention/admin/uexceptions.py +++ b/management/univention-directory-manager-modules/modules/univention/admin/uexceptions.py @@ -30,10 +30,10 @@ # /usr/share/common-licenses/AGPL-3; if not, see # . -import univention.admin.localization +from univention.admin import localization from univention.admin import configRegistry -translation=univention.admin.localization.translation('univention/admin') +translation=localization.translation('univention/admin') _=translation.translate diff --git a/management/univention-directory-manager-modules/modules/univention/admin/uldap.py b/management/univention-directory-manager-modules/modules/univention/admin/uldap.py index 6ec2be0..1110cd5 100644 --- a/management/univention-directory-manager-modules/modules/univention/admin/uldap.py +++ b/management/univention-directory-manager-modules/modules/univention/admin/uldap.py @@ -34,7 +34,7 @@ import univention.uldap import string import time -import univention.admin.localization +from univention.admin import localization import univention.config_registry try: @@ -43,7 +43,7 @@ except: GPLversion=True -translation=univention.admin.localization.translation('univention/admin') +translation=localization.translation('univention/admin') _=translation.translate configRegistry=univention.config_registry.ConfigRegistry()