diff --git a/api2/views.py b/api2/views.py index 5c92dc477e..4db0f0cf9c 100644 --- a/api2/views.py +++ b/api2/views.py @@ -37,7 +37,8 @@ from seaserv import seafserv_rpc, seafserv_threaded_rpc, server_repo_size, \ get_group_repos, get_repo, check_permission, get_commits, is_passwd_set,\ list_personal_repos_by_owner, list_personal_shared_repos, check_quota, \ list_share_repos, get_group_repos_by_owner, list_inner_pub_repos_by_owner,\ - remove_share, unshare_group_repo, unset_inner_pub_repo + remove_share, unshare_group_repo, unset_inner_pub_repo, get_user_quota, \ + get_user_share_usage, get_user_quota_usage, CALC_SHARE_USAGE json_content_type = 'application/json; charset=utf-8' @@ -105,8 +106,15 @@ class Account(APIView): info = {} email = request.user.username info['email'] = email - info['usage'] = seafserv_threaded_rpc.get_user_quota_usage(email) - info['total'] = seafserv_threaded_rpc.get_user_quota(email) + info['total'] = get_user_quota(email) + + if CALC_SHARE_USAGE: + my_usage = get_user_quota_usage(email) + share_usage = get_user_share_usage(email) + info['usage'] = my_usage + share_usage + else: + info['usage'] = get_user_quota_usage(email) + return Response(info) def calculate_repo_info(repo_list, username): @@ -340,7 +348,7 @@ class UploadLinkView(APIView): return api_error(status.HTTP_403_FORBIDDEN, "Can not access repo") if check_quota(repo_id) < 0: - return api_error(status.HTTP_520_OPERATION_FAILED, 'Above quota') + return api_error(HTTP_520_OPERATION_FAILED, 'Above quota') upload_url = gen_file_upload_url(token, 'upload-api') return Response(upload_url) diff --git a/thirdpart/seaserv/__init__.py b/thirdpart/seaserv/__init__.py index 9f2bafa574..9090c00e84 100644 --- a/thirdpart/seaserv/__init__.py +++ b/thirdpart/seaserv/__init__.py @@ -2,7 +2,9 @@ import service from service import ccnet_rpc, monitor_rpc, seafserv_rpc, \ seafserv_threaded_rpc, ccnet_threaded_rpc -from service import send_command, check_quota, web_get_access_token, unset_repo_passwd +from service import send_command, check_quota, web_get_access_token, \ + unset_repo_passwd, get_user_quota_usage, get_user_share_usage, \ + get_user_quota from service import get_emailusers, count_emailusers, get_session_info from service import get_org_groups, get_personal_groups_by_user, \ get_group_repoids, get_personal_groups, list_share_repos, remove_share, \ diff --git a/thirdpart/seaserv/service.py b/thirdpart/seaserv/service.py index a5c939bd60..90fd326da8 100644 --- a/thirdpart/seaserv/service.py +++ b/thirdpart/seaserv/service.py @@ -34,6 +34,7 @@ Commit: from datetime import datetime import json +import logging import os import sys import ConfigParser @@ -144,6 +145,9 @@ CALC_SHARE_USAGE = False if config.has_option('quota', 'calc_share_usage'): CALC_SHARE_USAGE = config.getboolean('quota', 'calc_share_usage') +# Get an instance of a logger +logger = logging.getLogger(__name__) + #### Basic ccnet API #### def get_emailusers(start, limit): @@ -860,8 +864,33 @@ def check_quota(repo_id): try: ret = seafserv_threaded_rpc.check_quota(repo_id) except SearpcError, e: + logger.error(e) ret = -1 return ret + +def get_user_quota(user): + try: + ret = seafserv_threaded_rpc.get_user_quota(user) + except SearpcError, e: + logger.error(e) + ret = 0 + return ret + +def get_user_quota_usage(user): + try: + ret = seafserv_threaded_rpc.get_user_quota_usage(user) + except SearpcError, e: + logger.error(e) + ret = 0 + return ret + +def get_user_share_usage(user): + try: + ret = seafserv_threaded_rpc.get_user_share_usage(user) + except SearpcError, e: + logger.error(e) + ret = 0 + return ret # access token def web_get_access_token(repo_id, obj_id, op, username): diff --git a/views.py b/views.py index 25ca0ce55d..19d9677655 100644 --- a/views.py +++ b/views.py @@ -44,7 +44,8 @@ from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_repos, get_emailusers, \ get_session_info, get_group_repoids, get_repo_owner, get_file_id_by_path, \ get_repo_history_limit, set_repo_history_limit, MAX_UPLOAD_FILE_SIZE, \ get_commit, MAX_DOWNLOAD_DIR_SIZE, CALC_SHARE_USAGE, count_emailusers, \ - count_inner_pub_repos, unset_inner_pub_repo + count_inner_pub_repos, unset_inner_pub_repo, get_user_quota_usage, \ + get_user_share_usage from pysearpc import SearpcError from base.accounts import User @@ -971,13 +972,9 @@ def myhome(request): quota_usage = 0 share_usage = 0 - my_usage = 0 - my_usage = seafserv_threaded_rpc.get_user_quota_usage(email) + my_usage = get_user_quota_usage(email) if CALC_SHARE_USAGE: - try: - share_usage = seafserv_threaded_rpc.get_user_share_usage(email) - except SearpcError, e: - share_usage = 0 + share_usage = get_user_share_usage(email) quota_usage = my_usage + share_usage else: quota_usage = my_usage