diff --git a/docs/changelog.rst b/docs/changelog.rst --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -22,6 +22,7 @@ news IP for pull/push logs. - moved all to base controller - #415: Adding comment to changeset causes reload. Comments are now added via ajax and doesn't reload the page +- #374 LDAP config is discarded when LDAP can't be activated fixes +++++ diff --git a/rhodecode/controllers/admin/ldap_settings.py b/rhodecode/controllers/admin/ldap_settings.py --- a/rhodecode/controllers/admin/ldap_settings.py +++ b/rhodecode/controllers/admin/ldap_settings.py @@ -100,25 +100,37 @@ class LdapSettingsController(BaseControl _form = LdapSettingsForm([x[0] for x in self.tls_reqcert_choices], [x[0] for x in self.search_scope_choices], [x[0] for x in self.tls_kind_choices])() + # check the ldap lib + ldap_active = False + try: + import ldap + ldap_active = True + except ImportError: + pass try: form_result = _form.to_python(dict(request.POST)) + try: for k, v in form_result.items(): if k.startswith('ldap_'): + if k == 'ldap_active': + v = ldap_active setting = RhodeCodeSetting.get_by_name(k) setting.app_settings_value = v self.sa.add(setting) self.sa.commit() h.flash(_('Ldap settings updated successfully'), - category='success') + category='success') + if not ldap_active: + #if ldap is missing send an info to user + h.flash(_('Unable to activate ldap. The "python-ldap" library ' + 'is missing.'), category='warning') + except (DatabaseError,): raise - except LdapImportError: - h.flash(_('Unable to activate ldap. The "python-ldap" library ' - 'is missing.'), category='warning') except formencode.Invalid, errors: e = errors.error_dict or {} diff --git a/rhodecode/model/forms.py b/rhodecode/model/forms.py --- a/rhodecode/model/forms.py +++ b/rhodecode/model/forms.py @@ -754,7 +754,7 @@ def LdapSettingsForm(tls_reqcert_choices class _LdapSettingsForm(formencode.Schema): allow_extra_fields = True filter_extra_fields = True - pre_validators = [LdapLibValidator] + #pre_validators = [LdapLibValidator] ldap_active = StringBoolean(if_missing=False) ldap_host = UnicodeString(strip=True,) ldap_port = Number(strip=True,)