Univention Bugzilla – Bug 33359
univention.admin.syntax import depends on previous import
Last modified: 2016-04-27 15:22:56 CEST
root@master:~# python Python 2.6.6 (r266:84292, Jul 19 2013, 07:37:05) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import univention.admin.syntax as udm_syntax Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/pymodules/python2.6/univention/admin/syntax.py", line 37, in <module> import univention.admin.modules File "/usr/lib/pymodules/python2.6/univention/admin/modules.py", line 978, in <module> univention.admin.syntax.import_syntax_files() AttributeError: 'module' object has no attribute 'syntax' >>> Python 2.6.6 (r266:84292, Jul 19 2013, 07:37:05) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import univention.admin.modules as udm_modules >>> import univention.admin.syntax as udm_syntax >>>
*** Bug 28179 has been marked as a duplicate of this bug. ***
If I had any free votes I would vote for this! The fix is a one liner: Index: univention-directory-manager-modules/modules/univention/admin/__init__.py =================================================================== --- univention-directory-manager-modules/modules/univention/admin/__init__.py (Revision 47702) +++ univention-directory-manager-modules/modules/univention/admin/__init__.py (Arbeitskopie) @@ -31,7 +31,7 @@ # <http://www.gnu.org/licenses/>. import copy, types, string, re -import mapping +from univention.admin import mapping import univention.config_registry import univention.debug I would also like to see a cleanup of the existing import statements… FYI: http://www.python.org/dev/peps/pep-0328/
(In reply to Florian Best from comment #2) > The fix is a one liner: Sorry, this was wrong.
lo = getMachineConnection() dn = lo.search(filter="(uid={})".format(username))[0][0] config = univention.admin.config.config() univention.admin.modules.update() usersmod = univention.admin.modules.get("users/user") lo, position = univention.admin.uldap.getAdminConnection() univention.admin.modules.init(lo, position, usersmod) dn_part = dn.partition(",") user = usersmod.lookup(config, lo, dn_part[0], base=dn_part[-1])[0] user.open() user["password"] = password user.modify() File "/usr/lib/pymodules/python2.7/univention/management/console/modules/passwordreset/__init__.py", line 302, in set_password user.modify() File "/usr/lib/pymodules/python2.7/univention/admin/handlers/users/user.py", line 1564, in modify return super(object, self).modify(*args, **kwargs) File "/usr/lib/pymodules/python2.7/univention/admin/handlers/__init__.py", line 364, in modify return self._modify(modify_childs,ignore_license=ignore_license) File "/usr/lib/pymodules/python2.7/univention/admin/handlers/__init__.py", line 839, in _modify ml=self._ldap_modlist() File "/usr/lib/pymodules/python2.7/univention/admin/handlers/users/user.py", line 2060, in _ldap_modlist pwhistoryPolicy = self.loadPolicyObject('policies/pwhistory') File "/usr/lib/pymodules/python2.7/univention/admin/handlers/__init__.py", line 1102, in loadPolicyObject self.policyObjects[policy_type]=univention.admin.objects.get(policy_module, None, self.lo, policy_position) AttributeError: 'module' object has no attribute 'objects' Does not happen, if "import univention.admin.objects" is before that.
Created attachment 7598 [details] patch This patch is working :)
Fixed in: Package: univention-directory-manager-modules Version: 11.0.2-26.1381.201604191507 univention-directory-manager-modules (11.0.2-26): r68791 | Bug #33359: importing univention.admin modules doesn't depend on previous imports anymore univention-directory-manager-modules.yaml: r68792 | YAML Bug #33359
OK - univention-directory-manager-modules OK - ucs-test-udm* OK - import univention.admin.syntax as udm_syntax OK - univention-directory-manager-modules.yaml
<http://errata.software-univention.de/ucs/4.1/156.html>