1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-04-28 03:10:45 +00:00

Merge pull request #2068 from haiwen/fix-transfer-share-links

fix transfer share links
This commit is contained in:
xiez 2018-04-12 16:42:22 +08:00 committed by GitHub
commit 12963cb7ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 1 deletions

View File

@ -19,7 +19,7 @@ from seahub.signals import repo_deleted
from seahub.views import get_system_default_repo_id
from seahub.admin_log.signals import admin_operation
from seahub.admin_log.models import REPO_CREATE, REPO_DELETE, REPO_TRANSFER
from seahub.share.models import FileShare, UploadLinkShare
from seahub.base.templatetags.seahub_tags import email2nickname, email2contact_email
try:
@ -339,6 +339,15 @@ class AdminLibrary(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=repo_owner, repo_id=repo_id).update(username=new_owner)
FileShare.objects.filter(username=repo_owner, 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

@ -2,6 +2,7 @@ import json
from django.core.urlresolvers import reverse
from seahub.test_utils import BaseTestCase
from tests.common.utils import randstring
from seahub.share.models import FileShare, UploadLinkShare
class AdminLibrariesTest(BaseTestCase):
@ -123,6 +124,11 @@ class AdminLibraryTest(BaseTestCase):
self.repo_id= self.repo.repo_id
self.library_url = reverse('api-v2.1-admin-library', args=[self.repo_id])
self.fs_share = FileShare.objects.create_dir_link(self.user.username,
self.repo_id, self.folder, None, None)
self.fs_upload = UploadLinkShare.objects.create_upload_link_share(self.user.username,
self.repo_id, self.folder, None, None)
def test_can_get(self):
@ -187,3 +193,27 @@ class AdminLibraryTest(BaseTestCase):
self.login_as(self.user)
resp = self.client.delete(self.library_url)
self.assertEqual(403, resp.status_code)
def test_reshare_to_share_links_after_transfer_repo(self):
self.login_as(self.admin)
assert len(UploadLinkShare.objects.all()) == 1
data = 'owner=%s' % self.admin_name
resp = self.client.put(self.library_url, data, 'application/x-www-form-urlencoded')
self.assertEqual(200, resp.status_code)
json_resp = json.loads(resp.content)
assert json_resp['owner'] == self.admin_name
def test_reshare_to_upload_links_after_transfer_repo(self):
self.login_as(self.admin)
assert len(UploadLinkShare.objects.all()) == 1
data = 'owner=%s' % self.admin_name
resp = self.client.put(self.library_url, data, 'application/x-www-form-urlencoded')
self.assertEqual(200, resp.status_code)
json_resp = json.loads(resp.content)
assert json_resp['owner'] == self.admin_name