comparison rhodecode/controllers/admin/users_groups.py @ 1271:aa7e45ad0cea beta

Fixed permissions for users groups, group can have create repo permission now. Some code refactor + pep8ify
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 19 Apr 2011 17:28:42 +0200
parents 5f2fbab7c429
children a62af7d509ee
comparison
equal deleted inserted replaced
1270:49872ed3227a 1271:aa7e45ad0cea
34 34
35 from rhodecode.lib import helpers as h 35 from rhodecode.lib import helpers as h
36 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator 36 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
37 from rhodecode.lib.base import BaseController, render 37 from rhodecode.lib.base import BaseController, render
38 38
39 from rhodecode.model.db import User, UsersGroup 39 from rhodecode.model.db import User, UsersGroup, Permission, UsersGroupToPerm
40 from rhodecode.model.forms import UserForm, UsersGroupForm 40 from rhodecode.model.forms import UserForm, UsersGroupForm
41 from rhodecode.model.user import UserModel
42 from rhodecode.model.users_group import UsersGroupModel 41 from rhodecode.model.users_group import UsersGroupModel
43 42
44 log = logging.getLogger(__name__) 43 log = logging.getLogger(__name__)
45 44
46 45
121 h.flash(_('updated users group %s') \ 120 h.flash(_('updated users group %s') \
122 % form_result['users_group_name'], 121 % form_result['users_group_name'],
123 category='success') 122 category='success')
124 #action_logger(self.rhodecode_user, 'new_user', '', '', self.sa) 123 #action_logger(self.rhodecode_user, 'new_user', '', '', self.sa)
125 except formencode.Invalid, errors: 124 except formencode.Invalid, errors:
125 e = errors.error_dict or {}
126
127 perm = Permission.get_by_key('hg.create.repository')
128 e.update({'create_repo_perm':
129 UsersGroupToPerm.has_perm(id, perm)})
130
126 return htmlfill.render( 131 return htmlfill.render(
127 render('admin/users_groups/users_group_edit.html'), 132 render('admin/users_groups/users_group_edit.html'),
128 defaults=errors.value, 133 defaults=errors.value,
129 errors=errors.error_dict or {}, 134 errors=e,
130 prefix_error=False, 135 prefix_error=False,
131 encoding="UTF-8") 136 encoding="UTF-8")
132 except Exception: 137 except Exception:
133 log.error(traceback.format_exc()) 138 log.error(traceback.format_exc())
134 h.flash(_('error occurred during update of users group %s') \ 139 h.flash(_('error occurred during update of users group %s') \
169 c.group_members = [(x.user_id, x.user.username) for x in 174 c.group_members = [(x.user_id, x.user.username) for x in
170 c.users_group.members] 175 c.users_group.members]
171 c.available_members = [(x.user_id, x.username) for x in 176 c.available_members = [(x.user_id, x.username) for x in
172 self.sa.query(User).all()] 177 self.sa.query(User).all()]
173 defaults = c.users_group.get_dict() 178 defaults = c.users_group.get_dict()
174 179 perm = Permission.get_by_key('hg.create.repository')
180 defaults.update({'create_repo_perm':
181 UsersGroupToPerm.has_perm(id, perm)})
175 return htmlfill.render( 182 return htmlfill.render(
176 render('admin/users_groups/users_group_edit.html'), 183 render('admin/users_groups/users_group_edit.html'),
177 defaults=defaults, 184 defaults=defaults,
178 encoding="UTF-8", 185 encoding="UTF-8",
179 force_defaults=False 186 force_defaults=False
180 ) 187 )
188
189 def update_perm(self, id):
190 """PUT /users_perm/id: Update an existing item"""
191 # url('users_group_perm', id=ID, method='put')
192
193 grant_perm = request.POST.get('create_repo_perm', False)
194
195 if grant_perm:
196 perm = Permission.get_by_key('hg.create.none')
197 UsersGroupToPerm.revoke_perm(id, perm)
198
199 perm = Permission.get_by_key('hg.create.repository')
200 UsersGroupToPerm.grant_perm(id, perm)
201 h.flash(_("Granted 'repository create' permission to user"),
202 category='success')
203
204 else:
205 perm = Permission.get_by_key('hg.create.repository')
206 UsersGroupToPerm.revoke_perm(id, perm)
207
208 perm = Permission.get_by_key('hg.create.none')
209 UsersGroupToPerm.grant_perm(id, perm)
210 h.flash(_("Revoked 'repository create' permission to user"),
211 category='success')
212
213 return redirect(url('edit_users_group', id=id))