1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-06-28 07:57:50 +00:00

Fixed api2 quota bug

This commit is contained in:
zhengxie 2013-03-02 16:58:37 +08:00
parent b0c516cdfe
commit d73e7c8996
4 changed files with 48 additions and 12 deletions

View File

@ -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)

View File

@ -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, \

View File

@ -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):

View File

@ -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