1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-08-19 07:27:56 +00:00

add err msg detail when share repo/folder failed

This commit is contained in:
lian 2016-02-24 15:02:01 +08:00
parent 101670f701
commit 62979d9af6
2 changed files with 26 additions and 13 deletions

View File

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

View File

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