mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-18 23:18:27 +00:00
add err msg detail when share repo/folder failed
This commit is contained in:
parent
101670f701
commit
62979d9af6
@ -263,18 +263,27 @@ class DirSharedItemsEndpoint(APIView):
|
|||||||
return api_error(status.HTTP_400_BAD_REQUEST, 'Bad permission')
|
return api_error(status.HTTP_400_BAD_REQUEST, 'Bad permission')
|
||||||
|
|
||||||
shared_repo = repo if path == '/' else sub_repo
|
shared_repo = repo if path == '/' else sub_repo
|
||||||
success, failed = [], []
|
result = {}
|
||||||
|
result['failed'] = []
|
||||||
|
result['success'] = []
|
||||||
|
|
||||||
if share_type == 'user':
|
if share_type == 'user':
|
||||||
share_to_users = request.DATA.getlist('username')
|
share_to_users = request.DATA.getlist('username')
|
||||||
for to_user in share_to_users:
|
for to_user in share_to_users:
|
||||||
if not is_valid_username(to_user):
|
if not is_valid_username(to_user):
|
||||||
failed.append(to_user)
|
result['failed'].append({
|
||||||
|
'email': to_user,
|
||||||
|
'error_msg': 'username invalid.'
|
||||||
|
})
|
||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
User.objects.get(email=to_user)
|
User.objects.get(email=to_user)
|
||||||
except User.DoesNotExist:
|
except User.DoesNotExist:
|
||||||
failed.append(to_user)
|
result['failed'].append({
|
||||||
|
'email': to_user,
|
||||||
|
'error_msg': 'User %s not found.' % to_user
|
||||||
|
})
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not check_user_share_quota(username, shared_repo, users=[to_user]):
|
if not check_user_share_quota(username, shared_repo, users=[to_user]):
|
||||||
@ -296,7 +305,7 @@ class DirSharedItemsEndpoint(APIView):
|
|||||||
from_user=username,
|
from_user=username,
|
||||||
to_user=to_user,
|
to_user=to_user,
|
||||||
repo=shared_repo)
|
repo=shared_repo)
|
||||||
success.append({
|
result['success'].append({
|
||||||
"share_type": "user",
|
"share_type": "user",
|
||||||
"user_info": {
|
"user_info": {
|
||||||
"name": to_user,
|
"name": to_user,
|
||||||
@ -309,7 +318,10 @@ class DirSharedItemsEndpoint(APIView):
|
|||||||
repo_id, path, permission)
|
repo_id, path, permission)
|
||||||
except SearpcError as e:
|
except SearpcError as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
failed.append(to_user)
|
result['failed'].append({
|
||||||
|
'email': to_user,
|
||||||
|
'error_msg': 'Internal Server Error'
|
||||||
|
})
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if share_type == 'group':
|
if share_type == 'group':
|
||||||
@ -337,7 +349,7 @@ class DirSharedItemsEndpoint(APIView):
|
|||||||
seafile_api.set_group_repo(shared_repo.repo_id, gid,
|
seafile_api.set_group_repo(shared_repo.repo_id, gid,
|
||||||
username, permission)
|
username, permission)
|
||||||
|
|
||||||
success.append({
|
result['success'].append({
|
||||||
"share_type": "group",
|
"share_type": "group",
|
||||||
"group_info": {
|
"group_info": {
|
||||||
"id": gid,
|
"id": gid,
|
||||||
@ -350,13 +362,14 @@ class DirSharedItemsEndpoint(APIView):
|
|||||||
repo_id, path, permission)
|
repo_id, path, permission)
|
||||||
except SearpcError as e:
|
except SearpcError as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
failed.append(group.group_name)
|
result['failed'].append({
|
||||||
|
'group_name': group.group_name,
|
||||||
|
'error_msg': 'Internal Server Error'
|
||||||
|
})
|
||||||
continue
|
continue
|
||||||
|
|
||||||
return HttpResponse(json.dumps({
|
return HttpResponse(json.dumps(result),
|
||||||
"success": success,
|
status=200, content_type=json_content_type)
|
||||||
"failed": failed
|
|
||||||
}), status=200, content_type=json_content_type)
|
|
||||||
|
|
||||||
def delete(self, request, repo_id, format=None):
|
def delete(self, request, repo_id, format=None):
|
||||||
username = request.user.username
|
username = request.user.username
|
||||||
|
@ -83,7 +83,7 @@ class DirSharedItemsTest(BaseTestCase):
|
|||||||
self.assertEqual(200, resp.status_code)
|
self.assertEqual(200, resp.status_code)
|
||||||
json_resp = json.loads(resp.content)
|
json_resp = json.loads(resp.content)
|
||||||
assert len(json_resp['failed']) == 1
|
assert len(json_resp['failed']) == 1
|
||||||
assert invalid_email in json_resp['failed']
|
assert invalid_email in json_resp['failed'][0]['email']
|
||||||
|
|
||||||
def test_share_folder_to_unregistered_user(self):
|
def test_share_folder_to_unregistered_user(self):
|
||||||
self.login_as(self.user)
|
self.login_as(self.user)
|
||||||
@ -98,7 +98,7 @@ class DirSharedItemsTest(BaseTestCase):
|
|||||||
self.assertEqual(200, resp.status_code)
|
self.assertEqual(200, resp.status_code)
|
||||||
json_resp = json.loads(resp.content)
|
json_resp = json.loads(resp.content)
|
||||||
assert len(json_resp['failed']) == 1
|
assert len(json_resp['failed']) == 1
|
||||||
assert unregistered_user in json_resp['failed']
|
assert unregistered_user in json_resp['failed'][0]['email']
|
||||||
|
|
||||||
def test_can_share_root_to_groups(self):
|
def test_can_share_root_to_groups(self):
|
||||||
self.login_as(self.user)
|
self.login_as(self.user)
|
||||||
|
Loading…
Reference in New Issue
Block a user