changeset 3883:88ec8f7b9e64 beta

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
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 22 May 2013 00:48:34 +0200
parents 2c5ceb546234
children 31f8c9d76a26
files rhodecode/controllers/admin/repos_groups.py
diffstat 1 files changed, 11 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/admin/repos_groups.py	Mon May 20 21:40:00 2013 +0200
+++ b/rhodecode/controllers/admin/repos_groups.py	Wed May 22 00:48:34 2013 +0200
@@ -211,11 +211,6 @@
         )()
         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 @@
     @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)