1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-08-02 07:47:32 +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')
shared_repo = repo if path == '/' else sub_repo
success, failed = [], []
result = {}
result['failed'] = []
result['success'] = []
if share_type == 'user':
share_to_users = request.DATA.getlist('username')
for to_user in share_to_users:
if not is_valid_username(to_user):
failed.append(to_user)
result['failed'].append({
'email': to_user,
'error_msg': 'username invalid.'
})
continue
try:
User.objects.get(email=to_user)
except User.DoesNotExist:
failed.append(to_user)
result['failed'].append({
'email': to_user,
'error_msg': 'User %s not found.' % to_user
})
continue
if not check_user_share_quota(username, shared_repo, users=[to_user]):
@ -296,7 +305,7 @@ class DirSharedItemsEndpoint(APIView):
from_user=username,
to_user=to_user,
repo=shared_repo)
success.append({
result['success'].append({
"share_type": "user",
"user_info": {
"name": to_user,
@ -309,7 +318,10 @@ class DirSharedItemsEndpoint(APIView):
repo_id, path, permission)
except SearpcError as e:
logger.error(e)
failed.append(to_user)
result['failed'].append({
'email': to_user,
'error_msg': 'Internal Server Error'
})
continue
if share_type == 'group':
@ -337,7 +349,7 @@ class DirSharedItemsEndpoint(APIView):
seafile_api.set_group_repo(shared_repo.repo_id, gid,
username, permission)
success.append({
result['success'].append({
"share_type": "group",
"group_info": {
"id": gid,
@ -350,13 +362,14 @@ class DirSharedItemsEndpoint(APIView):
repo_id, path, permission)
except SearpcError as e:
logger.error(e)
failed.append(group.group_name)
result['failed'].append({
'group_name': group.group_name,
'error_msg': 'Internal Server Error'
})
continue
return HttpResponse(json.dumps({
"success": success,
"failed": failed
}), status=200, content_type=json_content_type)
return HttpResponse(json.dumps(result),
status=200, content_type=json_content_type)
def delete(self, request, repo_id, format=None):
username = request.user.username

View File

@ -83,7 +83,7 @@ class DirSharedItemsTest(BaseTestCase):
self.assertEqual(200, resp.status_code)
json_resp = json.loads(resp.content)
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):
self.login_as(self.user)
@ -98,7 +98,7 @@ class DirSharedItemsTest(BaseTestCase):
self.assertEqual(200, resp.status_code)
json_resp = json.loads(resp.content)
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):
self.login_as(self.user)