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

transfer share links

This commit is contained in:
ilearnit
2018-04-11 16:19:20 +08:00
parent b99c923f8d
commit 12a9ef5b27
2 changed files with 40 additions and 0 deletions

View File

@@ -1433,6 +1433,15 @@ class RepoOwner(APIView):
seafile_api.set_group_repo(repo_id, shared_group_id,
new_owner, shared_group.perm)
# reshare repo to links
try:
UploadLinkShare.objects.filter(username=username, repo_id=repo_id).update(username=new_owner)
FileShare.objects.filter(username=username, repo_id=repo_id).update(username=new_owner)
except Exception as e:
logger.error(e)
error_msg = 'Internal Server Error'
return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
# check if current repo is pub-repo
# if YES, reshare current repo to public
for pub_repo in pub_repos:

View File

@@ -5,6 +5,7 @@ from django.core.urlresolvers import reverse
from seahub.test_utils import BaseTestCase
from seahub.base.accounts import User
from seahub.share.models import FileShare, UploadLinkShare
from tests.common.utils import randstring
from seaserv import seafile_api, ccnet_api
@@ -15,6 +16,12 @@ class RepoOwnerTest(BaseTestCase):
self.user_name = self.user.username
self.user_repo_id = self.repo.id
self.group_id = self.group.id
self.fs_share = FileShare.objects.create_dir_link(self.user.username,
self.user_repo_id, self.folder, None, None)
self.fs_upload = UploadLinkShare.objects.create_upload_link_share(self.user.username,
self.user_repo_id, self.folder, None, None)
def tearDown(self):
self.remove_repo()
@@ -195,3 +202,27 @@ class RepoOwnerTest(BaseTestCase):
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
self.assertEqual(404, resp.status_code)
def test_reshare_to_share_links_after_transfer_repo(self):
self.login_as(self.user)
assert len(UploadLinkShare.objects.all()) == 1
url = reverse("api2-repo-owner", args=[self.user_repo_id])
data = 'owner=%s' % self.admin.email
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
fs = FileShare.objects.get(repo_id=self.user_repo_id)
assert fs.username == self.admin.email
def test_reshare_to_upload_links_after_transfer_repo(self):
self.login_as(self.user)
assert len(UploadLinkShare.objects.all()) == 1
url = reverse("api2-repo-owner", args=[self.user_repo_id])
data = 'owner=%s' % self.admin.email
self.client.put(url, data, 'application/x-www-form-urlencoded')
fs = UploadLinkShare.objects.get(repo_id=self.user_repo_id)
assert fs.username == self.admin.email