aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rhodecode/model/repos_group.py5
-rw-r--r--rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html2
-rw-r--r--rhodecode/tests/models/common.py8
-rw-r--r--rhodecode/tests/models/test_user_permissions_on_groups.py5
4 files changed, 16 insertions, 4 deletions
diff --git a/rhodecode/model/repos_group.py b/rhodecode/model/repos_group.py
index d4162b39..a914fad0 100644
--- 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
index 17bcfcad..8b292f1a 100644
--- 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 @@
<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>
diff --git a/rhodecode/tests/models/common.py b/rhodecode/tests/models/common.py
index 377a05ee..017e9255 100644
--- a/rhodecode/tests/models/common.py
+++ b/rhodecode/tests/models/common.py
@@ -25,10 +25,11 @@ def _make_group(path, desc='desc', parent_id=None,
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
|
|_<g0/g0_3/g0_3_r1>
+ |_<g0/g0_3/g0_3_r2_private>
"""
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
index 6acf50c5..a034dcc8 100644
--- 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_recursive_mode():
_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'