def get_group_repos(request, group_id): if not request.is_ajax(): raise Http404 content_type = 'application/json; charset=utf-8' group_id_int = int(group_id) group = get_group(group_id_int) if not group: err_msg = _(u"The group doesn't exist") return HttpResponse(json.dumps({"err_msg": err_msg}), status=400, content_type=content_type) joined = is_group_user(group_id_int, request.user.username) if not joined and not request.user.is_staff: err_msg = _(u"Permission denied") return HttpResponse(json.dumps({"err_msg": err_msg}), status=403, content_type=content_type) repos = seafile_api.get_group_repo_list(group_id_int) repo_list = [] for repo in repos: repo_list.append({"name": repo.props.name, "id": repo.props.id}) return HttpResponse(json.dumps(repo_list), content_type=content_type)
try: shared_repos = seafile_api.get_share_in_repo_list(username, -1, -1) except SearpcError, e: util.warn("Failed to list shared repos: %s" % e.msg) for srepo in shared_repos: addRepo(srepo.repo_id) try: joined_groups = seaserv.get_personal_groups_by_user(username) except SearpcError, e: util.warn("Failed to get groups for %s" % username) for g in joined_groups: try: group_repos = seafile_api.get_group_repo_list(g.id) for repo in group_repos: if all_repos.has_key(repo.id): continue all_repos[repo.id] = repo except SearpcError, e: util.warn("Failed to list repos in group %d" % g.id) # Don't include encrypted repos ret = [] for repo in all_repos.values(): if not repo.encrypted: repo.name = repo.name.encode('utf-8') ret.append(repo) return ret