1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-03 16:10:26 +00:00

Library can not be transferred to owner. (#3404)

This commit is contained in:
sniper-py
2019-05-06 13:58:23 +08:00
committed by lian
parent c6451ce613
commit 80d75e2d74
5 changed files with 34 additions and 6 deletions

View File

@@ -176,11 +176,13 @@ class MylibRepoListItem extends React.Component {
this.props.onTransferRepo(repoID); this.props.onTransferRepo(repoID);
let message = gettext('Successfully transferred the library.'); let message = gettext('Successfully transferred the library.');
toaster.success(message); toaster.success(message);
}).catch(res => { }).catch(error => {
let message = gettext('Failed. Please check the network.'); if (error.response){
toaster.danger(message); toaster.danger(error.response.data.error_msg || gettext('Error'), {duration: 3});
} else {
toaster.danger(gettext('Failed. Please check the network.'), {duration: 3});
}
}); });
this.onTransferToggle(); this.onTransferToggle();
} }

View File

@@ -314,7 +314,7 @@ class AdminLibrary(APIView):
return api_error(status.HTTP_404_NOT_FOUND, error_msg) return api_error(status.HTTP_404_NOT_FOUND, error_msg)
if not new_owner_obj.permissions.can_add_repo(): if not new_owner_obj.permissions.can_add_repo():
error_msg = 'Transfer failed: role of %s is %s, can not add library.' % \ error_msg = _(u'Transfer failed: role of %s is %s, can not add library.') % \
(new_owner, new_owner_obj.role) (new_owner, new_owner_obj.role)
return api_error(status.HTTP_403_FORBIDDEN, error_msg) return api_error(status.HTTP_403_FORBIDDEN, error_msg)
@@ -334,6 +334,10 @@ class AdminLibrary(APIView):
repo_owner = seafile_api.get_repo_owner(repo_id) repo_owner = seafile_api.get_repo_owner(repo_id)
if new_owner == repo_owner:
error_msg = _(u"Library can not be transferred to owner.")
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
# get repo shared to user/group list # get repo shared to user/group list
shared_users = seafile_api.list_repo_shared_to( shared_users = seafile_api.list_repo_shared_to(
repo_owner, repo_id) repo_owner, repo_id)

View File

@@ -1546,10 +1546,14 @@ class RepoOwner(APIView):
return api_error(status.HTTP_403_FORBIDDEN, error_msg) return api_error(status.HTTP_403_FORBIDDEN, error_msg)
if not new_owner_obj.permissions.can_add_repo(): if not new_owner_obj.permissions.can_add_repo():
error_msg = 'Transfer failed: role of %s is %s, can not add library.' % \ error_msg = _(u'Transfer failed: role of %s is %s, can not add library.') % \
(new_owner, new_owner_obj.role) (new_owner, new_owner_obj.role)
return api_error(status.HTTP_403_FORBIDDEN, error_msg) return api_error(status.HTTP_403_FORBIDDEN, error_msg)
if new_owner == repo_owner:
error_msg = _(u"Library can not be transferred to owner.")
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
pub_repos = [] pub_repos = []
if org_id: if org_id:
# get repo shared to user/group list # get repo shared to user/group list

View File

@@ -148,6 +148,15 @@ class AdminLibraryTest(BaseTestCase):
resp = self.client.get(self.library_url) resp = self.client.get(self.library_url)
self.assertEqual(403, resp.status_code) self.assertEqual(403, resp.status_code)
def test_can_not_transfer_library_to_owner(self):
self.login_as(self.admin)
data = 'owner=%s' % self.user_name
resp = self.client.put(self.library_url, data, 'application/x-www-form-urlencoded')
self.assertEqual(400, resp.status_code)
def test_can_transfer(self): def test_can_transfer(self):
self.login_as(self.admin) self.login_as(self.admin)

View File

@@ -39,6 +39,15 @@ class RepoOwnerTest(BaseTestCase):
resp = self.client.get(reverse("api2-repo-owner", args=[self.user_repo_id])) resp = self.client.get(reverse("api2-repo-owner", args=[self.user_repo_id]))
self.assertEqual(403, resp.status_code) self.assertEqual(403, resp.status_code)
def test_can_not_transfer_repo_to_owner(self):
self.login_as(self.user)
url = reverse("api2-repo-owner", args=[self.user_repo_id])
data = 'owner=%s' % self.user.email
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
self.assertEqual(400, resp.status_code)
def test_can_transfer_repo(self): def test_can_transfer_repo(self):
self.login_as(self.user) self.login_as(self.user)