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:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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)
|
||||||
|
@@ -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
|
||||||
|
@@ -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)
|
||||||
|
@@ -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)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user