annotate rhodecode/controllers/admin/ldap_settings.py @ 858:508b3976345e beta

bumped development version
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 18 Dec 2010 15:03:18 +0100
parents 8226595268e6
children 5f7731e3ab4d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
769
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
2 """
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
3 package.rhodecode.controllers.admin.ldap_settings
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
4 ~~~~~~~~~~~~~~
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
5
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
6 ldap controller for RhodeCode
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
7 :created_on: Nov 26, 2010
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
8 :author: marcink
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
9 :copyright: (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
10 :license: GPLv3, see COPYING for more details.
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
11 """
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
12 # This program is free software; you can redistribute it and/or
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
13 # modify it under the terms of the GNU General Public License
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
14 # as published by the Free Software Foundation; version 2
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
15 # of the License or (at your opinion) any later version of the license.
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
16 #
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
17 # This program is distributed in the hope that it will be useful,
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
20 # GNU General Public License for more details.
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
21 #
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
22 # You should have received a copy of the GNU General Public License
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
23 # along with this program; if not, write to the Free Software
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
24 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
25 # MA 02110-1301, USA.
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
26 import logging
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
27 import formencode
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
28 import traceback
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
29
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
30 from formencode import htmlfill
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
31
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
32 from pylons import request, response, session, tmpl_context as c, url
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
33 from pylons.controllers.util import abort, redirect
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
34 from pylons.i18n.translation import _
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
35
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
36 from rhodecode.lib.base import BaseController, render
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
37 from rhodecode.lib import helpers as h
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
38 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
39 from rhodecode.lib.auth_ldap import LdapImportError
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
40 from rhodecode.model.settings import SettingsModel
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
41 from rhodecode.model.forms import LdapSettingsForm
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
42 from sqlalchemy.exc import DatabaseError
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
43
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
44 log = logging.getLogger(__name__)
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
45
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
46
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
47
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
48 class LdapSettingsController(BaseController):
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
49
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
50 @LoginRequired()
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
51 @HasPermissionAllDecorator('hg.admin')
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
52 def __before__(self):
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
53 c.admin_user = session.get('admin_user')
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
54 c.admin_username = session.get('admin_username')
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
55 super(LdapSettingsController, self).__before__()
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
56
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
57 def index(self):
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
58 defaults = SettingsModel().get_ldap_settings()
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
59
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
60 return htmlfill.render(
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
61 render('admin/ldap/ldap.html'),
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
62 defaults=defaults,
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
63 encoding="UTF-8",
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
64 force_defaults=True,)
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
65
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
66 def ldap_settings(self):
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
67 """
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
68 POST ldap create and store ldap settings
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
69 """
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
70
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
71 settings_model = SettingsModel()
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
72 _form = LdapSettingsForm()()
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
73
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
74 try:
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
75 form_result = _form.to_python(dict(request.POST))
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
76 try:
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
77
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
78 for k, v in form_result.items():
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
79 if k.startswith('ldap_'):
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
80 setting = settings_model.get(k)
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
81 setting.app_settings_value = v
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
82 self.sa.add(setting)
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
83
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
84 self.sa.commit()
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
85 h.flash(_('Ldap settings updated successfully'),
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
86 category='success')
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
87 except (DatabaseError,):
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
88 raise
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
89 except LdapImportError:
772
8226595268e6 fixed warning message
Marcin Kuzminski <marcin@python-works.com>
parents: 769
diff changeset
90 h.flash(_('Unable to activate ldap. The "python-ldap" library '
769
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
91 'is missing.'), category='warning')
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
92
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
93 except formencode.Invalid, errors:
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
94
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
95 return htmlfill.render(
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
96 render('admin/ldap/ldap.html'),
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
97 defaults=errors.value,
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
98 errors=errors.error_dict or {},
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
99 prefix_error=False,
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
100 encoding="UTF-8")
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
101 except Exception:
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
102 log.error(traceback.format_exc())
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
103 h.flash(_('error occured during update of ldap settings'),
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
104 category='error')
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
105
4bdcc08b04c4 fixes #77 moved out ldap config to it's own section
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
106 return redirect(url('ldap_home'))