##// END OF EJS Templates
Updated Journal messages + i18n
Updated Journal messages + i18n

File last commit:

r2257:a437a986 merge default
r2376:67936353 beta
Show More
ldap_settings.py
149 lines | 5.3 KiB | text/x-python | PythonLexer
fixes #77 moved out ldap config to it's own section
r769 # -*- coding: utf-8 -*-
"""
updated docs on every controller
r861 rhodecode.controllers.admin.ldap_settings
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fixes #77 moved out ldap config to it's own section
r769
ldap controller for RhodeCode
source code cleanup: remove trailing white space, normalize file endings
r1203
fixes #77 moved out ldap config to it's own section
r769 :created_on: Nov 26, 2010
:author: marcink
2012 copyrights
r1824 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
fixes #77 moved out ldap config to it's own section
r769 :license: GPLv3, see COPYING for more details.
"""
fixed license issue #149
r1206 # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
fixes #77 moved out ldap config to it's own section
r769 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
fixes #77 moved out ldap config to it's own section
r769 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
fixes #77 moved out ldap config to it's own section
r769 import logging
import formencode
import traceback
from formencode import htmlfill
from pylons import request, response, session, tmpl_context as c, url
from pylons.controllers.util import abort, redirect
from pylons.i18n.translation import _
added some fixes to LDAP form re-submition, new simples ldap-settings getter....
r1292 from sqlalchemy.exc import DatabaseError
fixes #77 moved out ldap config to it's own section
r769 from rhodecode.lib.base import BaseController, render
from rhodecode.lib import helpers as h
from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
added some fixes to LDAP form re-submition, new simples ldap-settings getter....
r1292 from rhodecode.lib.exceptions import LdapImportError
fixes #77 moved out ldap config to it's own section
r769 from rhodecode.model.forms import LdapSettingsForm
refactoring of models names for repoGroup permissions
r1633 from rhodecode.model.db import RhodeCodeSetting
fixes #77 moved out ldap config to it's own section
r769
log = logging.getLogger(__name__)
class LdapSettingsController(BaseController):
PEP8ify - controllers
r1245 search_scope_choices = [('BASE', _('BASE'),),
Thayne Harbaugh
Improve LDAP authentication...
r991 ('ONELEVEL', _('ONELEVEL'),),
PEP8ify - controllers
r1245 ('SUBTREE', _('SUBTREE'),),
Thayne Harbaugh
Improve LDAP authentication...
r991 ]
search_scope_default = 'SUBTREE'
PEP8ify - controllers
r1245 tls_reqcert_choices = [('NEVER', _('NEVER'),),
('ALLOW', _('ALLOW'),),
('TRY', _('TRY'),),
Thayne Harbaugh
Improve LDAP authentication...
r991 ('DEMAND', _('DEMAND'),),
PEP8ify - controllers
r1245 ('HARD', _('HARD'),),
Thayne Harbaugh
Improve LDAP authentication...
r991 ]
tls_reqcert_default = 'DEMAND'
"Lorenzo M. Catucci"
Enable start_tls connection encryption.
r1290 tls_kind_choices = [('PLAIN', _('No encryption'),),
('LDAPS', _('LDAPS connection'),),
('START_TLS', _('START_TLS on LDAP connection'),)
]
tls_kind_default = 'PLAIN'
fixes #77 moved out ldap config to it's own section
r769 @LoginRequired()
@HasPermissionAllDecorator('hg.admin')
def __before__(self):
c.admin_user = session.get('admin_user')
c.admin_username = session.get('admin_username')
Thayne Harbaugh
Improve LDAP authentication...
r991 c.search_scope_choices = self.search_scope_choices
PEP8ify - controllers
r1245 c.tls_reqcert_choices = self.tls_reqcert_choices
"Lorenzo M. Catucci"
Enable start_tls connection encryption.
r1290 c.tls_kind_choices = self.tls_kind_choices
added some fixes to LDAP form re-submition, new simples ldap-settings getter....
r1292
c.search_scope_cur = self.search_scope_default
c.tls_reqcert_cur = self.tls_reqcert_default
c.tls_kind_cur = self.tls_kind_default
fixes #77 moved out ldap config to it's own section
r769 super(LdapSettingsController, self).__before__()
def index(self):
refactoring of models names for repoGroup permissions
r1633 defaults = RhodeCodeSetting.get_ldap_settings()
Thayne Harbaugh
Improve LDAP authentication...
r991 c.search_scope_cur = defaults.get('ldap_search_scope')
PEP8ify - controllers
r1245 c.tls_reqcert_cur = defaults.get('ldap_tls_reqcert')
"Lorenzo M. Catucci"
Enable start_tls connection encryption.
r1290 c.tls_kind_cur = defaults.get('ldap_tls_kind')
fixes #77 moved out ldap config to it's own section
r769
return htmlfill.render(
render('admin/ldap/ldap.html'),
defaults=defaults,
encoding="UTF-8",
force_defaults=True,)
def ldap_settings(self):
fixed spelling mistakes, and some minor docs bugs
r860 """POST ldap create and store ldap settings"""
fixes #77 moved out ldap config to it's own section
r769
Thayne Harbaugh
Improve LDAP authentication...
r991 _form = LdapSettingsForm([x[0] for x in self.tls_reqcert_choices],
"Lorenzo M. Catucci"
Enable start_tls connection encryption.
r1290 [x[0] for x in self.search_scope_choices],
[x[0] for x in self.tls_kind_choices])()
fixed #374 LDAP config is now saved but deactivated if python-ldap lib is missing
r2193 # check the ldap lib
ldap_active = False
try:
import ldap
ldap_active = True
except ImportError:
pass
fixes #77 moved out ldap config to it's own section
r769
try:
form_result = _form.to_python(dict(request.POST))
fixed #374 LDAP config is now saved but deactivated if python-ldap lib is missing
r2193
fixes #77 moved out ldap config to it's own section
r769 try:
for k, v in form_result.items():
if k.startswith('ldap_'):
fixed #374 LDAP config is now saved but deactivated if python-ldap lib is missing
r2193 if k == 'ldap_active':
v = ldap_active
refactoring of models names for repoGroup permissions
r1633 setting = RhodeCodeSetting.get_by_name(k)
fixes #77 moved out ldap config to it's own section
r769 setting.app_settings_value = v
self.sa.add(setting)
self.sa.commit()
h.flash(_('Ldap settings updated successfully'),
fixed #374 LDAP config is now saved but deactivated if python-ldap lib is missing
r2193 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')
fixes #77 moved out ldap config to it's own section
r769 except (DatabaseError,):
raise
except formencode.Invalid, errors:
added some fixes to LDAP form re-submition, new simples ldap-settings getter....
r1292 e = errors.error_dict or {}
fixes #77 moved out ldap config to it's own section
r769
return htmlfill.render(
render('admin/ldap/ldap.html'),
defaults=errors.value,
added some fixes to LDAP form re-submition, new simples ldap-settings getter....
r1292 errors=e,
fixes #77 moved out ldap config to it's own section
r769 prefix_error=False,
encoding="UTF-8")
except Exception:
log.error(traceback.format_exc())
fixed spelling mistakes, and some minor docs bugs
r860 h.flash(_('error occurred during update of ldap settings'),
fixes #77 moved out ldap config to it's own section
r769 category='error')
return redirect(url('ldap_home'))