1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-20 02:48:51 +00:00

update repo share

1. reshare repo after user/admin transfer repo
2. show org repo share out list at share popup in org mode
This commit is contained in:
lian
2016-06-24 11:10:26 +08:00
parent 85bb2cd076
commit ed10512a53
4 changed files with 300 additions and 40 deletions

View File

@@ -22,7 +22,7 @@ from django.utils.translation import ugettext as _
import seaserv
from seaserv import ccnet_threaded_rpc, seafserv_threaded_rpc, \
seafile_api, get_group, get_group_members
seafile_api, get_group, get_group_members, ccnet_api
from pysearpc import SearpcError
from seahub.base.accounts import User
@@ -1611,8 +1611,45 @@ def sys_repo_transfer(request):
except SearpcError: # XXX: ignore rpc not found error
pass
repo_owner = seafile_api.get_repo_owner(repo_id)
shared_users = seafile_api.list_repo_shared_to(
repo_owner, repo_id)
shared_groups = seafile_api.list_repo_shared_group_by_user(
repo_owner, repo_id)
pub_repos = seaserv.seafserv_threaded_rpc.list_inner_pub_repos_by_owner(
repo_owner)
# transfer repo
seafile_api.set_repo_owner(repo_id, new_owner)
# reshare repo
for shared_user in shared_users:
shared_username = shared_user.user
if new_owner == shared_username:
continue
seafile_api.share_repo(repo_id, new_owner,
shared_username, shared_user.perm)
for shared_group in shared_groups:
shared_group_id = shared_group.group_id
if not ccnet_api.is_group_user(shared_group_id, new_owner):
continue
seafile_api.set_group_repo(repo_id, shared_group_id,
new_owner, shared_group.perm)
for pub_repo in pub_repos:
if repo_id != pub_repo.id:
continue
seaserv.seafserv_threaded_rpc.set_inner_pub_repo(
repo_id, pub_repo.permission)
break
messages.success(request, _(u'Successfully transfered.'))
return HttpResponseRedirect(next)