def calculate_repo_info(repo_list, username): """ Get some info for repo. """ for repo in repo_list: try: commit = get_commits(repo.id, 0, 1)[0] repo.latest_modify = commit.ctime repo.root = commit.root_id repo.size = seafserv_threaded_rpc.server_repo_size(repo.id) if not repo.size : repo.size = 0; password_need = False if repo.encrypted: try: ret = seafserv_rpc.is_passwd_set(repo.id, username) if ret != 1: password_need = True except SearpcErroe, e: pass repo.password_need = password_need except Exception,e: repo.latest_modify = 0 repo.commit = None repo.size = -1 repo.password_need = None
def get(self, request, repo_id, format=None): repo = get_repo(repo_id) if not repo: return api_error(status.HTTP_404_NOT_FOUND, 'Repo not found.') # check whether user is repo owner if validate_owner(request, repo_id): owner = "self" else: owner = "share" last_commit = get_commits(repo.id, 0, 1)[0] repo.latest_modify = last_commit.ctime if last_commit else None # query repo infomation repo.size = seafserv_threaded_rpc.server_repo_size(repo_id) current_commit = get_commits(repo_id, 0, 1)[0] root_id = current_commit.root_id if current_commit else None repo_json = { "type":"repo", "id":repo.id, "owner":owner, "name":repo.name, "desc":repo.desc, "mtime":repo.latest_modify, "size":repo.size, "encrypted":repo.encrypted, "root":root_id, } return Response(repo_json)
def get(self, request, repo_id, format=None): repo = get_repo(repo_id) if not repo: return api_error(status.HTTP_404_NOT_FOUND, 'Repo not found.') # check whether user is repo owner if validate_owner(request, repo_id): owner = "self" else: owner = "share" last_commit = get_commits(repo.id, 0, 1)[0] repo.latest_modify = last_commit.ctime if last_commit else None # query repo infomation repo.size = seafserv_threaded_rpc.server_repo_size(repo_id) current_commit = get_commits(repo_id, 0, 1)[0] root_id = current_commit.root_id if current_commit else None repo_json = { "type": "repo", "id": repo.id, "owner": owner, "name": repo.name, "desc": repo.desc, "mtime": repo.latest_modify, "size": repo.size, "encrypted": repo.encrypted, "root": root_id, } return Response(repo_json)
def get(self, request, repo_id, format=None): # check whether user can view repo repo = get_repo(repo_id) if not repo: return api_error('404') # if not can_access_repo(request, repo.id): # return api_error('403') # check whether use is repo owner if validate_owner(request, repo_id): owner = "self" else: owner = "share" last_commit = get_commits(repo.id, 0, 1)[0].ctime repo.latest_modify = last_commit.ctime if last_commit else None # query repo infomation repo.size = seafserv_threaded_rpc.server_repo_size(repo_id) current_commit = get_commits(repo_id, 0, 1)[0] root_id = current_commit.root_id if current_commit else None # generate download url for client ccnet_applet_root = get_ccnetapplet_root() relay_id = get_session_info().id addr, port = get_ccnet_server_addr_port () email = quote(request.user.username) token = get_repo_token_nonnull(repo_id, request.user.username) quote_repo_name = quote(repo.name.encode('utf-8')) enc = 1 if repo.encrypted else '' url = ccnet_applet_root + "/repo/download/" url += "?relay_id=%s&relay_addr=%s&relay_port=%s" % (relay_id, addr, port) url += "&email=%s&token=%s" % (email, token) url += "&repo_id=%s&repo_name=%s&encrypted=%s" % (repo_id, quote_repo_name, enc) repo_json = { "type":"repo", "id":repo.id, "owner":owner, "name":repo.name, "desc":repo.desc, "mtime":repo.lastest_modify, "size":repo.size, "encrypted":repo.encrypted, "root":root_id, "download_url": url, } return Response(repo_json)
def get_repo_info(request, repo_id): # check whether user can view repo repo = get_repo(repo_id) if not repo: return api_error(request, '404') if not can_access_repo(request, repo.id): return api_error(request, '403') # check whether use is repo owner if validate_owner(request, repo_id): owner = "self" else: owner = "share" try: repo.latest_modify = get_commits(repo.id, 0, 1)[0].ctime except: repo.latest_modify = None # query repo infomation repo.size = seafserv_threaded_rpc.server_repo_size(repo_id) current_commit = get_commits(repo_id, 0, 1)[0] repo_json = { "type":"repo", "id":repo.id, "owner":owner, "name":repo.name, "desc":repo.desc, "mtime":repo.lastest_modify, "size":repo.size, "encrypted":r.encrypted, "root":current_commit.root_id, "password_need":repo.password_need, } response = Response(200, repo_json) return self.render(response)