changeset 3221:dd0ee9119aa9 beta

recursive mode of setting permission should skip private repositories, they should remain private, it's proper thing to do !
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 25 Jan 2013 00:30:25 +0100
parents 9e76876a0690
children b4daef4cc26d
files rhodecode/model/repos_group.py rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html rhodecode/tests/models/common.py rhodecode/tests/models/test_user_permissions_on_groups.py rhodecode/tests/models/test_users_group_permissions_on_groups.py
diffstat 5 files changed, 16 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/model/repos_group.py	Fri Jan 25 00:13:01 2013 +0100
+++ b/rhodecode/model/repos_group.py	Fri Jan 25 00:30:25 2013 +0100
@@ -175,6 +175,10 @@
                     repos_group=obj, user=user, perm=perm
                 )
             elif isinstance(obj, Repository):
+                #we do this ONLY IF repository is non-private
+                if obj.private:
+                    return
+
                 # we set group permission but we have to switch to repo
                 # permission
                 perm = perm.replace('group.', 'repository.')
@@ -199,6 +203,7 @@
                   % (repos_group, recursive))
 
         for obj in repos_group.recursive_groups_and_repos():
+            #obj is an instance of a group or repositories in that group
             if not recursive:
                 obj = repos_group
 
--- a/rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html	Fri Jan 25 00:13:01 2013 +0100
+++ b/rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html	Fri Jan 25 00:30:25 2013 +0100
@@ -71,7 +71,7 @@
     <tr>
         <td colspan="6">
            ${h.checkbox('recursive',value="True", label=_('apply to children'))}
-           <span class="help-block">${_('Set or revoke permission to all children of that group, including repositories and other groups')}</span>
+           <span class="help-block">${_('Set or revoke permission to all children of that group, including non-private repositories and other groups')}</span>
         </td>
     </tr>
 </table>
--- a/rhodecode/tests/models/common.py	Fri Jan 25 00:13:01 2013 +0100
+++ b/rhodecode/tests/models/common.py	Fri Jan 25 00:30:25 2013 +0100
@@ -25,10 +25,11 @@
     return gr
 
 
-def _make_repo(name, repos_group=None, repo_type='hg'):
+def _make_repo(name, repos_group=None, repo_type='hg', private=False):
     return RepoModel().create_repo(name, repo_type, 'desc',
                                    TEST_USER_ADMIN_LOGIN,
-                                   repos_group=repos_group)
+                                   repos_group=repos_group,
+                                   private=private)
 
 
 def _destroy_project_tree(test_u1_id):
@@ -67,6 +68,7 @@
      |__[g0_3] 1 repo
         |
         |_<g0/g0_3/g0_3_r1>
+        |_<g0/g0_3/g0_3_r2_private>
 
     """
     test_u1 = UserModel().create_or_update(
@@ -84,6 +86,8 @@
     g0_2_r2 = _make_repo('g0/g0_2/g0_2_r2', repos_group=g0_2)
     g0_3 = _make_group('g0_3', parent_id=g0)
     g0_3_r1 = _make_repo('g0/g0_3/g0_3_r1', repos_group=g0_3)
+    g0_3_r2_private = _make_repo('g0/g0_3/g0_3_r1_private', repos_group=g0_3,
+                                 private=True)
     return test_u1
 
 
--- a/rhodecode/tests/models/test_user_permissions_on_groups.py	Fri Jan 25 00:13:01 2013 +0100
+++ b/rhodecode/tests/models/test_user_permissions_on_groups.py	Fri Jan 25 00:30:25 2013 +0100
@@ -101,7 +101,10 @@
     _check_expected_count(items, repo_items, expected_count(group, True))
 
     for name, perm in repo_items:
-        yield check_tree_perms, name, perm, group, 'repository.write'
+        if name == 'g0/g0_3/g0_3_r1_private':
+            yield check_tree_perms, name, perm, group, 'repository.none'
+        else:
+            yield check_tree_perms, name, perm, group, 'repository.write'
 
     for name, perm in items:
         yield check_tree_perms, name, perm, group, 'group.write'
--- a/rhodecode/tests/models/test_users_group_permissions_on_groups.py	Fri Jan 25 00:13:01 2013 +0100
+++ b/rhodecode/tests/models/test_users_group_permissions_on_groups.py	Fri Jan 25 00:30:25 2013 +0100
@@ -117,11 +117,6 @@
 
 
 @with_setup(permissions_setup_func)
-def test_user_permissions_on_group_with_recursive_mode_and_private_repos():
-    assert 0
-
-
-@with_setup(permissions_setup_func)
 def test_user_permissions_on_group_with_recursive_mode_inner_group():
     ## set permission to g0_3 group to none
     recursive = True