Mercurial > kallithea
comparison rhodecode/controllers/admin/users_groups.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 | 4a7de41dc22a |
children | d9ba58526712 |
comparison
equal
deleted
inserted
replaced
2005:ab0e122b38a7 | 2031:82a88013a3fd |
---|---|
5 | 5 |
6 Users Groups crud controller for pylons | 6 Users Groups crud controller for pylons |
7 | 7 |
8 :created_on: Jan 25, 2011 | 8 :created_on: Jan 25, 2011 |
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 |
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 abort, redirect |
33 from pylons.i18n.translation import _ | 33 from pylons.i18n.translation import _ |
34 | 34 |
35 from rhodecode.lib.exceptions import UsersGroupsAssignedException | 35 from rhodecode.lib.exceptions import UsersGroupsAssignedException |
36 from rhodecode.lib import helpers as h | 36 from rhodecode.lib import helpers as h, safe_unicode |
37 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator | 37 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator |
38 from rhodecode.lib.base import BaseController, render | 38 from rhodecode.lib.base import BaseController, render |
39 | 39 |
40 from rhodecode.model.users_group import UsersGroupModel | |
41 | |
40 from rhodecode.model.db import User, UsersGroup, Permission, UsersGroupToPerm | 42 from rhodecode.model.db import User, UsersGroup, Permission, UsersGroupToPerm |
41 from rhodecode.model.forms import UserForm, UsersGroupForm | 43 from rhodecode.model.forms import UsersGroupForm |
44 from rhodecode.model.meta import Session | |
42 | 45 |
43 log = logging.getLogger(__name__) | 46 log = logging.getLogger(__name__) |
44 | 47 |
45 | 48 |
46 class UsersGroupsController(BaseController): | 49 class UsersGroupsController(BaseController): |
68 # url('users_groups') | 71 # url('users_groups') |
69 | 72 |
70 users_group_form = UsersGroupForm()() | 73 users_group_form = UsersGroupForm()() |
71 try: | 74 try: |
72 form_result = users_group_form.to_python(dict(request.POST)) | 75 form_result = users_group_form.to_python(dict(request.POST)) |
73 UsersGroup.create(form_result) | 76 UsersGroupModel().create(name=form_result['users_group_name'], |
77 active=form_result['users_group_active']) | |
74 h.flash(_('created users group %s') \ | 78 h.flash(_('created users group %s') \ |
75 % form_result['users_group_name'], category='success') | 79 % form_result['users_group_name'], category='success') |
76 #action_logger(self.rhodecode_user, 'new_user', '', '', self.sa) | 80 #action_logger(self.rhodecode_user, 'new_user', '', '', self.sa) |
81 Session.commit() | |
77 except formencode.Invalid, errors: | 82 except formencode.Invalid, errors: |
78 return htmlfill.render( | 83 return htmlfill.render( |
79 render('admin/users_groups/users_group_add.html'), | 84 render('admin/users_groups/users_group_add.html'), |
80 defaults=errors.value, | 85 defaults=errors.value, |
81 errors=errors.error_dict or {}, | 86 errors=errors.error_dict or {}, |
101 # h.form(url('users_group', id=ID), | 106 # h.form(url('users_group', id=ID), |
102 # method='put') | 107 # method='put') |
103 # url('users_group', id=ID) | 108 # url('users_group', id=ID) |
104 | 109 |
105 c.users_group = UsersGroup.get(id) | 110 c.users_group = UsersGroup.get(id) |
106 c.group_members = [(x.user_id, x.user.username) for x in | 111 c.group_members_obj = [x.user for x in c.users_group.members] |
107 c.users_group.members] | 112 c.group_members = [(x.user_id, x.username) for x in |
113 c.group_members_obj] | |
108 | 114 |
109 c.available_members = [(x.user_id, x.username) for x in | 115 c.available_members = [(x.user_id, x.username) for x in |
110 self.sa.query(User).all()] | 116 self.sa.query(User).all()] |
117 | |
118 available_members = [safe_unicode(x[0]) for x in c.available_members] | |
119 | |
111 users_group_form = UsersGroupForm(edit=True, | 120 users_group_form = UsersGroupForm(edit=True, |
112 old_data=c.users_group.get_dict(), | 121 old_data=c.users_group.get_dict(), |
113 available_members=[str(x[0]) for x | 122 available_members=available_members)() |
114 in c.available_members])() | |
115 | 123 |
116 try: | 124 try: |
117 form_result = users_group_form.to_python(request.POST) | 125 form_result = users_group_form.to_python(request.POST) |
118 UsersGroup.update(id, form_result) | 126 UsersGroupModel().update(c.users_group, form_result) |
119 h.flash(_('updated users group %s') \ | 127 h.flash(_('updated users group %s') \ |
120 % form_result['users_group_name'], | 128 % form_result['users_group_name'], |
121 category='success') | 129 category='success') |
122 #action_logger(self.rhodecode_user, 'new_user', '', '', self.sa) | 130 #action_logger(self.rhodecode_user, 'new_user', '', '', self.sa) |
131 Session.commit() | |
123 except formencode.Invalid, errors: | 132 except formencode.Invalid, errors: |
124 e = errors.error_dict or {} | 133 e = errors.error_dict or {} |
125 | 134 |
126 perm = Permission.get_by_key('hg.create.repository') | 135 perm = Permission.get_by_key('hg.create.repository') |
127 e.update({'create_repo_perm': | 136 e.update({'create_repo_perm': |
128 UsersGroupToPerm.has_perm(id, perm)}) | 137 UsersGroupModel().has_perm(id, perm)}) |
129 | 138 |
130 return htmlfill.render( | 139 return htmlfill.render( |
131 render('admin/users_groups/users_group_edit.html'), | 140 render('admin/users_groups/users_group_edit.html'), |
132 defaults=errors.value, | 141 defaults=errors.value, |
133 errors=e, | 142 errors=e, |
148 # h.form(url('users_group', id=ID), | 157 # h.form(url('users_group', id=ID), |
149 # method='delete') | 158 # method='delete') |
150 # url('users_group', id=ID) | 159 # url('users_group', id=ID) |
151 | 160 |
152 try: | 161 try: |
153 UsersGroup.delete(id) | 162 UsersGroupModel().delete(id) |
154 h.flash(_('successfully deleted users group'), category='success') | 163 h.flash(_('successfully deleted users group'), category='success') |
164 Session.commit() | |
155 except UsersGroupsAssignedException, e: | 165 except UsersGroupsAssignedException, e: |
156 h.flash(e, category='error') | 166 h.flash(e, category='error') |
157 except Exception: | 167 except Exception: |
158 h.flash(_('An error occurred during deletion of users group'), | 168 h.flash(_('An error occurred during deletion of users group'), |
159 category='error') | 169 category='error') |
170 c.users_group = self.sa.query(UsersGroup).get(id) | 180 c.users_group = self.sa.query(UsersGroup).get(id) |
171 if not c.users_group: | 181 if not c.users_group: |
172 return redirect(url('users_groups')) | 182 return redirect(url('users_groups')) |
173 | 183 |
174 c.users_group.permissions = {} | 184 c.users_group.permissions = {} |
175 c.group_members = [(x.user_id, x.user.username) for x in | 185 c.group_members_obj = [x.user for x in c.users_group.members] |
176 c.users_group.members] | 186 c.group_members = [(x.user_id, x.username) for x in |
187 c.group_members_obj] | |
177 c.available_members = [(x.user_id, x.username) for x in | 188 c.available_members = [(x.user_id, x.username) for x in |
178 self.sa.query(User).all()] | 189 self.sa.query(User).all()] |
179 defaults = c.users_group.get_dict() | 190 defaults = c.users_group.get_dict() |
180 perm = Permission.get_by_key('hg.create.repository') | 191 perm = Permission.get_by_key('hg.create.repository') |
181 defaults.update({'create_repo_perm': | 192 defaults.update({'create_repo_perm': |
182 UsersGroupToPerm.has_perm(id, perm)}) | 193 UsersGroupModel().has_perm(c.users_group, perm)}) |
183 return htmlfill.render( | 194 return htmlfill.render( |
184 render('admin/users_groups/users_group_edit.html'), | 195 render('admin/users_groups/users_group_edit.html'), |
185 defaults=defaults, | 196 defaults=defaults, |
186 encoding="UTF-8", | 197 encoding="UTF-8", |
187 force_defaults=False | 198 force_defaults=False |
193 | 204 |
194 grant_perm = request.POST.get('create_repo_perm', False) | 205 grant_perm = request.POST.get('create_repo_perm', False) |
195 | 206 |
196 if grant_perm: | 207 if grant_perm: |
197 perm = Permission.get_by_key('hg.create.none') | 208 perm = Permission.get_by_key('hg.create.none') |
198 UsersGroupToPerm.revoke_perm(id, perm) | 209 UsersGroupModel().revoke_perm(id, perm) |
199 | 210 |
200 perm = Permission.get_by_key('hg.create.repository') | 211 perm = Permission.get_by_key('hg.create.repository') |
201 UsersGroupToPerm.grant_perm(id, perm) | 212 UsersGroupModel().grant_perm(id, perm) |
202 h.flash(_("Granted 'repository create' permission to user"), | 213 h.flash(_("Granted 'repository create' permission to user"), |
203 category='success') | 214 category='success') |
204 | 215 |
216 Session.commit() | |
205 else: | 217 else: |
206 perm = Permission.get_by_key('hg.create.repository') | 218 perm = Permission.get_by_key('hg.create.repository') |
207 UsersGroupToPerm.revoke_perm(id, perm) | 219 UsersGroupModel().revoke_perm(id, perm) |
208 | 220 |
209 perm = Permission.get_by_key('hg.create.none') | 221 perm = Permission.get_by_key('hg.create.none') |
210 UsersGroupToPerm.grant_perm(id, perm) | 222 UsersGroupModel().grant_perm(id, perm) |
211 h.flash(_("Revoked 'repository create' permission to user"), | 223 h.flash(_("Revoked 'repository create' permission to user"), |
212 category='success') | 224 category='success') |
213 | 225 Session.commit() |
214 return redirect(url('edit_users_group', id=id)) | 226 return redirect(url('edit_users_group', id=id)) |