diff --git a/rhodecode/model/repos_group.py b/rhodecode/model/repos_group.py
--- a/rhodecode/model/repos_group.py
+++ b/rhodecode/model/repos_group.py
@@ -175,6 +175,10 @@ class ReposGroupModel(BaseModel):
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 @@ class ReposGroupModel(BaseModel):
% (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 --git a/rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html b/rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html
--- a/rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html
+++ b/rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html
@@ -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 --git a/rhodecode/tests/models/common.py b/rhodecode/tests/models/common.py
--- a/rhodecode/tests/models/common.py
+++ b/rhodecode/tests/models/common.py
@@ -25,10 +25,11 @@ def _make_group(path, desc='desc', paren
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 @@ def _create_project_tree():
|__[g0_3] 1 repo
|
|_
+ |_
"""
test_u1 = UserModel().create_or_update(
@@ -84,6 +86,8 @@ def _create_project_tree():
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 --git a/rhodecode/tests/models/test_user_permissions_on_groups.py b/rhodecode/tests/models/test_user_permissions_on_groups.py
--- a/rhodecode/tests/models/test_user_permissions_on_groups.py
+++ b/rhodecode/tests/models/test_user_permissions_on_groups.py
@@ -101,7 +101,10 @@ def test_user_permissions_on_group_with_
_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'