def get_group_repos(username, org_id, groups): """Get repos shared to groups. """ group_repos = [] if org_id: # For each group I joined... for grp in groups: # Get group repos, and for each group repos... for r_id in seafile_api.get_org_group_repoids(org_id, grp.id): # No need to list my own repo repo_owner = seafile_api.get_org_repo_owner(r_id) if repo_owner == username: continue group_repos.append(r_id) else: # For each group I joined... for grp in groups: # Get group repos, and for each group repos... for r_id in seafile_api.get_group_repoids(grp.id): # No need to list my own repo repo_owner = seafile_api.get_repo_owner(r_id) if repo_owner == username: continue group_repos.append(r_id) return group_repos
def share_to_group(request, repo, group, permission): """Share repo to group with given permission. """ repo_id = repo.id group_id = group.id from_user = request.user.username if is_org_context(request): org_id = request.user.org.org_id group_repo_ids = seafile_api.get_org_group_repoids(org_id, group.id) else: group_repo_ids = seafile_api.get_group_repoids(group.id) if repo.id in group_repo_ids: return False try: if is_org_context(request): org_id = request.user.org.org_id seafile_api.add_org_group_repo(repo_id, org_id, group_id, from_user, permission) else: seafile_api.set_group_repo(repo_id, group_id, from_user, permission) return True except Exception, e: logger.error(e) return False
def share_to_group(request, repo, group, permission): """Share repo to group with given permission. """ repo_id = repo.id group_id = group.id group_name = group.group_name from_user = request.user.username if is_org_context(request): org_id = request.user.org.org_id group_repo_ids = seafile_api.get_org_group_repoids(org_id, group.id) else: group_repo_ids = seafile_api.get_group_repoids(group.id) if repo.id in group_repo_ids: msg = _(u'"%(repo)s" is already in group %(group)s. <a href="%(href)s">View</a>') % { 'repo': repo.name, 'group': group.group_name, 'href': reverse('group_info', args=[group.id])} messages.error(request, msg) return try: if is_org_context(request): org_id = request.user.org.org_id seafile_api.add_org_group_repo(repo_id, org_id, group_id, from_user, permission) else: seafile_api.set_group_repo(repo_id, group_id, from_user, permission) except Exception, e: logger.error(e) msg = _(u'Failed to share %(repo)s to %(group)s, please try again later.') % \ {'repo': repo.name, 'group': group_name} messages.error(request, msg)
def share_to_group(request, repo, from_user, group, permission): """Share repo to group with given permission. """ repo_id = repo.id group_id = group.id group_name = group.group_name if repo.id in seafile_api.get_group_repoids(group.id): msg = _( u'"%(repo)s" is already in group %(group)s. <a href="%(href)s">View</a>' ) % { 'repo': repo.name, 'group': group.group_name, 'href': reverse('group_info', args=[group.id]) } messages.error(request, msg) return try: seafile_api.group_share_repo(repo_id, group_id, from_user, permission) except Exception, e: logger.error(e) msg = _(u'Failed to share %(repo)s to %(group)s, please try again later.') % \ {'repo': repo.name, 'group': group_name} messages.error(request, msg)
def share_to_group(request, repo, group, permission): """Share repo to group with given permission. """ repo_id = repo.id group_id = group.id group_name = group.group_name from_user = request.user.username if is_org_context(request): org_id = request.user.org.org_id group_repo_ids = seafile_api.get_org_group_repoids(org_id, group.id) else: group_repo_ids = seafile_api.get_group_repoids(group.id) if repo.id in group_repo_ids: msg = _(u'"%(repo)s" is already in group %(group)s. <a href="%(href)s">View</a>') % { 'repo': escape(repo.name), 'group': escape(group.group_name), 'href': reverse('group_info', args=[group.id])} messages.error(request, msg, extra_tags='safe') return try: if is_org_context(request): org_id = request.user.org.org_id seafile_api.add_org_group_repo(repo_id, org_id, group_id, from_user, permission) else: seafile_api.set_group_repo(repo_id, group_id, from_user, permission) except Exception, e: logger.error(e) msg = _(u'Failed to share %(repo)s to %(group)s, please try again later.') % \ {'repo': repo.name, 'group': group_name} messages.error(request, msg)
def get_group_repos(username, org_id, groups): """Get repos shared to groups. """ group_repos = [] if org_id: # For each group I joined... for grp in groups: # Get group repos, and for each group repos... for r_id in seafile_api.get_org_group_repoids(org_id, grp.id): # No need to list my own repo repo_owner = seafile_api.get_org_repo_owner(r_id) if repo_owner == username: continue # Convert repo properties due to the different collumns in Repo # and SharedRepo r = seafile_api.get_repo(r_id) if not r: continue r.repo_id = r.id r.repo_name = r.name r.repo_desc = r.desc r.last_modified = get_repo_last_modify(r) r.share_type = 'group' r.user = repo_owner r.user_perm = seafile_api.check_repo_access_permission( r_id, username) r.group = grp group_repos.append(r) else: # For each group I joined... for grp in groups: # Get group repos, and for each group repos... for r_id in seafile_api.get_group_repoids(grp.id): # No need to list my own repo repo_owner = seafile_api.get_repo_owner(r_id) if repo_owner == username: continue # Convert repo properties due to the different collumns in Repo # and SharedRepo r = seafile_api.get_repo(r_id) if not r: continue r.repo_id = r.id r.repo_name = r.name r.repo_desc = r.desc r.last_modified = get_repo_last_modify(r) r.share_type = 'group' r.user = repo_owner r.user_perm = seafile_api.check_repo_access_permission( r_id, username) r.group = grp group_repos.append(r) return group_repos
def get_group_repos(request, groups): """Get repos shared to groups. """ group_repos = [] if is_org_context(request): org_id = request.user.org.org_id # For each group I joined... for grp in groups: # Get group repos, and for each group repos... for r_id in seafile_api.get_org_group_repoids(org_id, grp.id): repo_owner = seafile_api.get_org_repo_owner(r_id) # Convert repo properties due to the different collumns in Repo # and SharedRepo r = get_repo(r_id) if not r: continue r.repo_id = r.id r.repo_name = r.name r.repo_desc = r.desc r.last_modified = get_repo_last_modify(r) r.share_type = 'group' r.user = repo_owner r.user_perm = check_folder_permission(request, r_id, '/') r.group = grp group_repos.append(r) else: # For each group I joined... for grp in groups: # Get group repos, and for each group repos... for r_id in seafile_api.get_group_repoids(grp.id): repo_owner = seafile_api.get_repo_owner(r_id) # Convert repo properties due to the different collumns in Repo # and SharedRepo r = get_repo(r_id) if not r: continue r.repo_id = r.id r.repo_name = r.name r.repo_desc = r.desc r.last_modified = get_repo_last_modify(r) r.share_type = 'group' r.user = repo_owner r.user_perm = check_folder_permission(request, r_id, '/') r.group = grp group_repos.append(r) return group_repos
def test_share_repo_to_group(repo, group, permission): assert api.check_permission(repo.id, USER) == 'rw' assert api.check_permission(repo.id, USER2) is None repos = api.get_repos_by_group(group.id) assert len(repos) == 0 group_list = ccnet_api.get_groups(USER) assert len(group_list) == 1 group_list = ccnet_api.get_groups(USER2) assert len(group_list) == 0 api.group_share_repo(repo.id, group.id, USER, permission) repos = api.get_repos_by_group(group.id) assert_repo_with_permission(repo, repos, permission) group_ids = api.get_shared_group_ids_by_repo(repo.id) assert group_ids[0] == str(group.id) group_list = api.list_repo_shared_group_by_user(USER, repo.id) assert len(group_list) == 1 group_list = api.list_repo_shared_group_by_user(USER2, repo.id) assert len(group_list) == 0 repo_get = api.get_group_shared_repo_by_path(repo.id, None, group.id) assert repo_get and repo_get.repo_id == repo.id ccnet_api.group_add_member(group.id, USER, USER2) group_list = ccnet_api.get_groups(USER2) assert len(group_list) == 1 group = group_list[0] assert group.id == group.id repos2 = api.get_repos_by_group(group.id) assert_repo_with_permission(repo, repos2, permission) assert api.check_permission(repo.id, USER2) == permission repos = api.get_group_repos_by_user(USER) assert len(repos) == 1 repoids = api.get_group_repoids(group.id) assert len(repoids) == 1 repos = api.get_group_repos_by_owner(USER) assert len(repos) == 1 api.remove_group_repos_by_owner(group.id, USER) repos = api.get_group_repos_by_owner(USER) assert len(repos) == 0 api.set_group_repo(repo.id, group.id, USER, permission) repos = api.get_repos_by_group(group.id) assert len(repos) == 1 api.remove_group_repos(group.id) repos = api.get_repos_by_group(group.id) assert len(repos) == 0 api.group_unshare_repo(repo.id, group.id, USER) repos = api.get_repos_by_group(group.id) assert len(repos) == 0 assert api.check_permission(repo.id, USER2) is None