mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-22 11:57:34 +00:00
[sysadmin] Fix rpc not found error when transfer repo
This commit is contained in:
@@ -1147,25 +1147,38 @@ def sys_repo_transfer(request):
|
|||||||
repo_id = request.POST.get('repo_id', None)
|
repo_id = request.POST.get('repo_id', None)
|
||||||
new_owner = request.POST.get('email', None)
|
new_owner = request.POST.get('email', None)
|
||||||
|
|
||||||
if repo_id and new_owner:
|
|
||||||
if seafserv_threaded_rpc.get_org_id_by_repo_id(repo_id) > 0:
|
|
||||||
messages.error(request, _(u'Can not transfer organization library'))
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
User.objects.get(email=new_owner)
|
|
||||||
if ccnet_threaded_rpc.get_orgs_by_user(new_owner):
|
|
||||||
messages.error(request, _(u'Can not transfer library to organization user %s') % new_owner)
|
|
||||||
else:
|
|
||||||
seafile_api.set_repo_owner(repo_id, new_owner)
|
|
||||||
messages.success(request, _(u'Successfully transfered.'))
|
|
||||||
except User.DoesNotExist:
|
|
||||||
messages.error(request, _(u'Failed to transfer, user %s not found') % new_owner)
|
|
||||||
else:
|
|
||||||
messages.error(request, _(u'Failed to transfer, invalid arguments.'))
|
|
||||||
|
|
||||||
next = request.META.get('HTTP_REFERER', None)
|
next = request.META.get('HTTP_REFERER', None)
|
||||||
if not next:
|
if not next:
|
||||||
next = reverse(sys_repo_admin)
|
next = reverse(sys_repo_admin)
|
||||||
|
|
||||||
|
if not (repo_id and new_owner):
|
||||||
|
messages.error(request, _(u'Failed to transfer, invalid arguments.'))
|
||||||
|
return HttpResponseRedirect(next)
|
||||||
|
|
||||||
|
repo = seafile_api.get_repo(repo_id)
|
||||||
|
if not repo:
|
||||||
|
messages.error(request, _(u'Library does not exist'))
|
||||||
|
return HttpResponseRedirect(next)
|
||||||
|
|
||||||
|
try:
|
||||||
|
User.objects.get(email=new_owner)
|
||||||
|
except User.DoesNotExist:
|
||||||
|
messages.error(request, _(u'Failed to transfer, user %s not found') % new_owner)
|
||||||
|
return HttpResponseRedirect(next)
|
||||||
|
|
||||||
|
try:
|
||||||
|
if seafserv_threaded_rpc.get_org_id_by_repo_id(repo_id) > 0:
|
||||||
|
messages.error(request, _(u'Can not transfer organization library'))
|
||||||
|
return HttpResponseRedirect(next)
|
||||||
|
|
||||||
|
if ccnet_threaded_rpc.get_orgs_by_user(new_owner):
|
||||||
|
messages.error(request, _(u'Can not transfer library to organization user %s') % new_owner)
|
||||||
|
return HttpResponseRedirect(next)
|
||||||
|
except SearpcError: # XXX: ignore rpc not found error
|
||||||
|
pass
|
||||||
|
|
||||||
|
seafile_api.set_repo_owner(repo_id, new_owner)
|
||||||
|
messages.success(request, _(u'Successfully transfered.'))
|
||||||
return HttpResponseRedirect(next)
|
return HttpResponseRedirect(next)
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
Reference in New Issue
Block a user