# HG changeset patch # User Mads Kiilerich # Date 2013-03-28 00:15:56 # Node ID 1ec67ddcaffe7fc39137523e20b97978aa8b7efc # Parent 10b4e34841a49964da2483761343b8bf0d300f53 ldap: handle more elegantly that python-ldap isn't installed when trying to use ldap Don't fail with AttributeError: 'NoneType' object has no attribute 'SCOPE_SUBTREE' in the log. diff --git a/rhodecode/lib/auth.py b/rhodecode/lib/auth.py --- a/rhodecode/lib/auth.py +++ b/rhodecode/lib/auth.py @@ -40,7 +40,8 @@ from rhodecode import __platform__, is_w from rhodecode.model.meta import Session from rhodecode.lib.utils2 import str2bool, safe_unicode -from rhodecode.lib.exceptions import LdapPasswordError, LdapUsernameError +from rhodecode.lib.exceptions import LdapPasswordError, LdapUsernameError,\ + LdapImportError from rhodecode.lib.utils import get_repo_slug, get_repos_group_slug from rhodecode.lib.auth_ldap import AuthLdap @@ -241,7 +242,7 @@ def authenticate(username, password): Session().commit() return True - except (LdapUsernameError, LdapPasswordError,): + except (LdapUsernameError, LdapPasswordError, LdapImportError): pass except (Exception,): log.error(traceback.format_exc()) diff --git a/rhodecode/lib/auth_ldap.py b/rhodecode/lib/auth_ldap.py --- a/rhodecode/lib/auth_ldap.py +++ b/rhodecode/lib/auth_ldap.py @@ -26,7 +26,7 @@ import logging from rhodecode.lib.exceptions import LdapConnectionError, LdapUsernameError, \ - LdapPasswordError + LdapPasswordError, LdapImportError from rhodecode.lib.utils2 import safe_str log = logging.getLogger(__name__) @@ -36,7 +36,7 @@ try: import ldap except ImportError: # means that python-ldap is not installed - pass + ldap = None class AuthLdap(object): @@ -45,6 +45,9 @@ class AuthLdap(object): tls_kind='PLAIN', tls_reqcert='DEMAND', ldap_version=3, ldap_filter='(&(objectClass=user)(!(objectClass=computer)))', search_scope='SUBTREE', attr_login='uid'): + if ldap is None: + raise LdapImportError + self.ldap_version = ldap_version ldap_server_type = 'ldap'