--- a/management/univention-directory-manager-modules/modules/univention/admin/__init__.py
+++ a/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> ' ):
--- a/management/univention-directory-manager-modules/modules/univention/admin/hook.py
+++ a/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() )
--- a/management/univention-directory-manager-modules/modules/univention/admin/modules.py
+++ a/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()
-
--- a/management/univention-directory-manager-modules/modules/univention/admin/syntax.py
+++ a/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
--- a/management/univention-directory-manager-modules/modules/univention/admin/uexceptions.py
+++ a/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
--- a/management/univention-directory-manager-modules/modules/univention/admin/uldap.py
+++ a/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()