mirror of
https://github.com/haiwen/seahub.git
synced 2025-06-28 16:08:25 +00:00
Fixed api2 quota bug
This commit is contained in:
parent
b0c516cdfe
commit
d73e7c8996
@ -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,\
|
get_group_repos, get_repo, check_permission, get_commits, is_passwd_set,\
|
||||||
list_personal_repos_by_owner, list_personal_shared_repos, check_quota, \
|
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,\
|
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'
|
json_content_type = 'application/json; charset=utf-8'
|
||||||
|
|
||||||
@ -105,8 +106,15 @@ class Account(APIView):
|
|||||||
info = {}
|
info = {}
|
||||||
email = request.user.username
|
email = request.user.username
|
||||||
info['email'] = email
|
info['email'] = email
|
||||||
info['usage'] = seafserv_threaded_rpc.get_user_quota_usage(email)
|
info['total'] = get_user_quota(email)
|
||||||
info['total'] = seafserv_threaded_rpc.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)
|
return Response(info)
|
||||||
|
|
||||||
def calculate_repo_info(repo_list, username):
|
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")
|
return api_error(status.HTTP_403_FORBIDDEN, "Can not access repo")
|
||||||
|
|
||||||
if check_quota(repo_id) < 0:
|
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')
|
upload_url = gen_file_upload_url(token, 'upload-api')
|
||||||
return Response(upload_url)
|
return Response(upload_url)
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
import service
|
import service
|
||||||
from service import ccnet_rpc, monitor_rpc, seafserv_rpc, \
|
from service import ccnet_rpc, monitor_rpc, seafserv_rpc, \
|
||||||
seafserv_threaded_rpc, ccnet_threaded_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_emailusers, count_emailusers, get_session_info
|
||||||
from service import get_org_groups, get_personal_groups_by_user, \
|
from service import get_org_groups, get_personal_groups_by_user, \
|
||||||
get_group_repoids, get_personal_groups, list_share_repos, remove_share, \
|
get_group_repoids, get_personal_groups, list_share_repos, remove_share, \
|
||||||
|
@ -34,6 +34,7 @@ Commit:
|
|||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import json
|
import json
|
||||||
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import ConfigParser
|
import ConfigParser
|
||||||
@ -144,6 +145,9 @@ CALC_SHARE_USAGE = False
|
|||||||
if config.has_option('quota', 'calc_share_usage'):
|
if config.has_option('quota', 'calc_share_usage'):
|
||||||
CALC_SHARE_USAGE = config.getboolean('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 ####
|
#### Basic ccnet API ####
|
||||||
|
|
||||||
def get_emailusers(start, limit):
|
def get_emailusers(start, limit):
|
||||||
@ -860,8 +864,33 @@ def check_quota(repo_id):
|
|||||||
try:
|
try:
|
||||||
ret = seafserv_threaded_rpc.check_quota(repo_id)
|
ret = seafserv_threaded_rpc.check_quota(repo_id)
|
||||||
except SearpcError, e:
|
except SearpcError, e:
|
||||||
|
logger.error(e)
|
||||||
ret = -1
|
ret = -1
|
||||||
return ret
|
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
|
# access token
|
||||||
def web_get_access_token(repo_id, obj_id, op, username):
|
def web_get_access_token(repo_id, obj_id, op, username):
|
||||||
|
11
views.py
11
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_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_repo_history_limit, set_repo_history_limit, MAX_UPLOAD_FILE_SIZE, \
|
||||||
get_commit, MAX_DOWNLOAD_DIR_SIZE, CALC_SHARE_USAGE, count_emailusers, \
|
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 pysearpc import SearpcError
|
||||||
|
|
||||||
from base.accounts import User
|
from base.accounts import User
|
||||||
@ -971,13 +972,9 @@ def myhome(request):
|
|||||||
|
|
||||||
quota_usage = 0
|
quota_usage = 0
|
||||||
share_usage = 0
|
share_usage = 0
|
||||||
my_usage = 0
|
my_usage = get_user_quota_usage(email)
|
||||||
my_usage = seafserv_threaded_rpc.get_user_quota_usage(email)
|
|
||||||
if CALC_SHARE_USAGE:
|
if CALC_SHARE_USAGE:
|
||||||
try:
|
share_usage = get_user_share_usage(email)
|
||||||
share_usage = seafserv_threaded_rpc.get_user_share_usage(email)
|
|
||||||
except SearpcError, e:
|
|
||||||
share_usage = 0
|
|
||||||
quota_usage = my_usage + share_usage
|
quota_usage = my_usage + share_usage
|
||||||
else:
|
else:
|
||||||
quota_usage = my_usage
|
quota_usage = my_usage
|
||||||
|
Loading…
Reference in New Issue
Block a user