# HG changeset patch # User Marcin Kuzminski # Date 1359070225 -3600 # Node ID 6f82f8bdd22c7519cf5f7ba399fe35768191d7c8 # Parent 055dc1ab768cb795e09f8ecb027ef55f38b9aff0 recursive mode of setting permission should skip private repositories, they should remain private, it's proper thing to do ! diff -r 055dc1ab768c -r 6f82f8bdd22c rhodecode/model/repos_group.py --- a/rhodecode/model/repos_group.py Thu Jan 24 01:20:03 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 diff -r 055dc1ab768c -r 6f82f8bdd22c rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html --- a/rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html Thu Jan 24 01:20:03 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 @@ ${h.checkbox('recursive',value="True", label=_('apply to children'))} - ${_('Set or revoke permission to all children of that group, including repositories and other groups')} + ${_('Set or revoke permission to all children of that group, including non-private repositories and other groups')} diff -r 055dc1ab768c -r 6f82f8bdd22c rhodecode/tests/models/common.py --- a/rhodecode/tests/models/common.py Thu Jan 24 01:20:03 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 | |_ + |_ """ 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 diff -r 055dc1ab768c -r 6f82f8bdd22c rhodecode/tests/models/test_user_permissions_on_groups.py --- a/rhodecode/tests/models/test_user_permissions_on_groups.py Thu Jan 24 01:20:03 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'