Mercurial > kallithea
comparison rhodecode/controllers/admin/users.py @ 2031:82a88013a3fd
merge 1.3 into stable
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 26 Feb 2012 17:25:09 +0200 |
parents | bf263968da47 89efedac4e6c |
children | dc2584ba5fbc |
comparison
equal
deleted
inserted
replaced
2005:ab0e122b38a7 | 2031:82a88013a3fd |
---|---|
5 | 5 |
6 Users crud controller for pylons | 6 Users crud controller for pylons |
7 | 7 |
8 :created_on: Apr 4, 2010 | 8 :created_on: Apr 4, 2010 |
9 :author: marcink | 9 :author: marcink |
10 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com> | 10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com> |
11 :license: GPLv3, see COPYING for more details. | 11 :license: GPLv3, see COPYING for more details. |
12 """ | 12 """ |
13 # This program is free software: you can redistribute it and/or modify | 13 # This program is free software: you can redistribute it and/or modify |
14 # it under the terms of the GNU General Public License as published by | 14 # it under the terms of the GNU General Public License as published by |
15 # the Free Software Foundation, either version 3 of the License, or | 15 # the Free Software Foundation, either version 3 of the License, or |
27 import traceback | 27 import traceback |
28 import formencode | 28 import formencode |
29 | 29 |
30 from formencode import htmlfill | 30 from formencode import htmlfill |
31 from pylons import request, session, tmpl_context as c, url, config | 31 from pylons import request, session, tmpl_context as c, url, config |
32 from pylons.controllers.util import abort, redirect | 32 from pylons.controllers.util import redirect |
33 from pylons.i18n.translation import _ | 33 from pylons.i18n.translation import _ |
34 | 34 |
35 from rhodecode.lib.exceptions import DefaultUserException, \ | 35 from rhodecode.lib.exceptions import DefaultUserException, \ |
36 UserOwnsReposException | 36 UserOwnsReposException |
37 from rhodecode.lib import helpers as h | 37 from rhodecode.lib import helpers as h |
38 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator | 38 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator |
39 from rhodecode.lib.base import BaseController, render | 39 from rhodecode.lib.base import BaseController, render |
40 | 40 |
41 from rhodecode.model.db import User, RepoToPerm, UserToPerm, Permission | 41 from rhodecode.model.db import User, Permission |
42 from rhodecode.model.forms import UserForm | 42 from rhodecode.model.forms import UserForm |
43 from rhodecode.model.user import UserModel | 43 from rhodecode.model.user import UserModel |
44 from rhodecode.model.meta import Session | |
44 | 45 |
45 log = logging.getLogger(__name__) | 46 log = logging.getLogger(__name__) |
46 | 47 |
47 | 48 |
48 class UsersController(BaseController): | 49 class UsersController(BaseController): |
69 def create(self): | 70 def create(self): |
70 """POST /users: Create a new item""" | 71 """POST /users: Create a new item""" |
71 # url('users') | 72 # url('users') |
72 | 73 |
73 user_model = UserModel() | 74 user_model = UserModel() |
74 login_form = UserForm()() | 75 user_form = UserForm()() |
75 try: | 76 try: |
76 form_result = login_form.to_python(dict(request.POST)) | 77 form_result = user_form.to_python(dict(request.POST)) |
77 user_model.create(form_result) | 78 user_model.create(form_result) |
78 h.flash(_('created user %s') % form_result['username'], | 79 h.flash(_('created user %s') % form_result['username'], |
79 category='success') | 80 category='success') |
81 Session.commit() | |
80 #action_logger(self.rhodecode_user, 'new_user', '', '', self.sa) | 82 #action_logger(self.rhodecode_user, 'new_user', '', '', self.sa) |
81 except formencode.Invalid, errors: | 83 except formencode.Invalid, errors: |
82 return htmlfill.render( | 84 return htmlfill.render( |
83 render('admin/users/user_add.html'), | 85 render('admin/users/user_add.html'), |
84 defaults=errors.value, | 86 defaults=errors.value, |
112 form_result = {} | 114 form_result = {} |
113 try: | 115 try: |
114 form_result = _form.to_python(dict(request.POST)) | 116 form_result = _form.to_python(dict(request.POST)) |
115 user_model.update(id, form_result) | 117 user_model.update(id, form_result) |
116 h.flash(_('User updated successfully'), category='success') | 118 h.flash(_('User updated successfully'), category='success') |
117 | 119 Session.commit() |
118 except formencode.Invalid, errors: | 120 except formencode.Invalid, errors: |
119 e = errors.error_dict or {} | 121 e = errors.error_dict or {} |
120 perm = Permission.get_by_key('hg.create.repository') | 122 perm = Permission.get_by_key('hg.create.repository') |
121 e.update({'create_repo_perm': UserToPerm.has_perm(id, perm)}) | 123 e.update({'create_repo_perm': user_model.has_perm(id, perm)}) |
122 return htmlfill.render( | 124 return htmlfill.render( |
123 render('admin/users/user_edit.html'), | 125 render('admin/users/user_edit.html'), |
124 defaults=errors.value, | 126 defaults=errors.value, |
125 errors=e, | 127 errors=e, |
126 prefix_error=False, | 128 prefix_error=False, |
142 # url('user', id=ID) | 144 # url('user', id=ID) |
143 user_model = UserModel() | 145 user_model = UserModel() |
144 try: | 146 try: |
145 user_model.delete(id) | 147 user_model.delete(id) |
146 h.flash(_('successfully deleted user'), category='success') | 148 h.flash(_('successfully deleted user'), category='success') |
149 Session.commit() | |
147 except (UserOwnsReposException, DefaultUserException), e: | 150 except (UserOwnsReposException, DefaultUserException), e: |
148 h.flash(str(e), category='warning') | 151 h.flash(str(e), category='warning') |
149 except Exception: | 152 except Exception: |
150 h.flash(_('An error occurred during deletion of user'), | 153 h.flash(_('An error occurred during deletion of user'), |
151 category='error') | 154 category='error') |
156 # url('user', id=ID) | 159 # url('user', id=ID) |
157 | 160 |
158 def edit(self, id, format='html'): | 161 def edit(self, id, format='html'): |
159 """GET /users/id/edit: Form to edit an existing item""" | 162 """GET /users/id/edit: Form to edit an existing item""" |
160 # url('edit_user', id=ID) | 163 # url('edit_user', id=ID) |
161 user_model = UserModel() | 164 c.user = User.get(id) |
162 c.user = user_model.get(id) | |
163 if not c.user: | 165 if not c.user: |
164 return redirect(url('users')) | 166 return redirect(url('users')) |
165 if c.user.username == 'default': | 167 if c.user.username == 'default': |
166 h.flash(_("You can't edit this user"), category='warning') | 168 h.flash(_("You can't edit this user"), category='warning') |
167 return redirect(url('users')) | 169 return redirect(url('users')) |
168 c.user.permissions = {} | 170 c.user.permissions = {} |
169 c.granted_permissions = user_model.fill_perms(c.user)\ | 171 c.granted_permissions = UserModel().fill_perms(c.user)\ |
170 .permissions['global'] | 172 .permissions['global'] |
171 | 173 |
172 defaults = c.user.get_dict() | 174 defaults = c.user.get_dict() |
173 perm = Permission.get_by_key('hg.create.repository') | 175 perm = Permission.get_by_key('hg.create.repository') |
174 defaults.update({'create_repo_perm': UserToPerm.has_perm(id, perm)}) | 176 defaults.update({'create_repo_perm': UserModel().has_perm(id, perm)}) |
175 | 177 |
176 return htmlfill.render( | 178 return htmlfill.render( |
177 render('admin/users/user_edit.html'), | 179 render('admin/users/user_edit.html'), |
178 defaults=defaults, | 180 defaults=defaults, |
179 encoding="UTF-8", | 181 encoding="UTF-8", |
183 def update_perm(self, id): | 185 def update_perm(self, id): |
184 """PUT /users_perm/id: Update an existing item""" | 186 """PUT /users_perm/id: Update an existing item""" |
185 # url('user_perm', id=ID, method='put') | 187 # url('user_perm', id=ID, method='put') |
186 | 188 |
187 grant_perm = request.POST.get('create_repo_perm', False) | 189 grant_perm = request.POST.get('create_repo_perm', False) |
190 user_model = UserModel() | |
188 | 191 |
189 if grant_perm: | 192 if grant_perm: |
190 perm = Permission.get_by_key('hg.create.none') | 193 perm = Permission.get_by_key('hg.create.none') |
191 UserToPerm.revoke_perm(id, perm) | 194 user_model.revoke_perm(id, perm) |
192 | 195 |
193 perm = Permission.get_by_key('hg.create.repository') | 196 perm = Permission.get_by_key('hg.create.repository') |
194 UserToPerm.grant_perm(id, perm) | 197 user_model.grant_perm(id, perm) |
195 h.flash(_("Granted 'repository create' permission to user"), | 198 h.flash(_("Granted 'repository create' permission to user"), |
196 category='success') | 199 category='success') |
197 | 200 Session.commit() |
198 else: | 201 else: |
199 perm = Permission.get_by_key('hg.create.repository') | 202 perm = Permission.get_by_key('hg.create.repository') |
200 UserToPerm.revoke_perm(id, perm) | 203 user_model.revoke_perm(id, perm) |
201 | 204 |
202 perm = Permission.get_by_key('hg.create.none') | 205 perm = Permission.get_by_key('hg.create.none') |
203 UserToPerm.grant_perm(id, perm) | 206 user_model.grant_perm(id, perm) |
204 h.flash(_("Revoked 'repository create' permission to user"), | 207 h.flash(_("Revoked 'repository create' permission to user"), |
205 category='success') | 208 category='success') |
206 | 209 Session.commit() |
207 return redirect(url('edit_user', id=id)) | 210 return redirect(url('edit_user', id=id)) |