# HG changeset patch # User Marcin Kuzminski # Date 2013-05-22 00:48:34 # Node ID 88ec8f7b9e6468cc72ddcae86fda06fa001bac3f # Parent 2c5ceb5462344f1a135dd4637e5050492f0c0aed Fixed issues with group renames for local repository group admins. - revoke permission on yourself check was triggered thus preventing group update. Moved this check into update permission function diff --git a/rhodecode/controllers/admin/repos_groups.py b/rhodecode/controllers/admin/repos_groups.py --- a/rhodecode/controllers/admin/repos_groups.py +++ b/rhodecode/controllers/admin/repos_groups.py @@ -211,11 +211,6 @@ class ReposGroupsController(BaseControll )() try: form_result = repos_group_form.to_python(dict(request.POST)) - if not c.rhodecode_user.is_admin: - if self._revoke_perms_on_yourself(form_result): - msg = _('Cannot revoke permission for yourself as admin') - h.flash(msg, category='warning') - raise Exception('revoke admin permission on self') new_gr = ReposGroupModel().update(group_name, form_result) Session().commit() @@ -278,14 +273,20 @@ class ReposGroupsController(BaseControll @HasReposGroupPermissionAnyDecorator('group.admin') def set_repo_group_perm_member(self, group_name): c.repos_group = ReposGroupModel()._get_repo_group(group_name) - form = RepoGroupPermsForm()().to_python(request.POST) - - recursive = form['recursive'] + form_result = RepoGroupPermsForm()().to_python(request.POST) + if not c.rhodecode_user.is_admin: + if self._revoke_perms_on_yourself(form_result): + msg = _('Cannot revoke permission for yourself as admin') + h.flash(msg, category='warning') + return redirect(url('edit_repos_group', group_name=group_name)) + recursive = form_result['recursive'] # iterate over all members(if in recursive mode) of this groups and # set the permissions ! # this can be potentially heavy operation - ReposGroupModel()._update_permissions(c.repos_group, form['perms_new'], - form['perms_updates'], recursive) + ReposGroupModel()._update_permissions(c.repos_group, + form_result['perms_new'], + form_result['perms_updates'], + recursive) #TODO: implement this #action_logger(self.rhodecode_user, 'admin_changed_repo_permissions', # repo_name, self.ip_addr, self.sa)