From dae8c4b57592f97c24d488bf8fa9b46c8ad5c115 Mon Sep 17 00:00:00 2001 From: zhengxie Date: Mon, 23 Sep 2013 16:58:33 +0800 Subject: [PATCH] Enable library transfer for admin --- seahub/templates/sysadmin/sys_repo_admin.html | 42 +++++++++++++++++-- seahub/urls.py | 3 +- seahub/views/sysadmin.py | 23 ++++++++++ 3 files changed, 64 insertions(+), 4 deletions(-) diff --git a/seahub/templates/sysadmin/sys_repo_admin.html b/seahub/templates/sysadmin/sys_repo_admin.html index 1f49cf0dfb..93e0fea234 100644 --- a/seahub/templates/sysadmin/sys_repo_admin.html +++ b/seahub/templates/sysadmin/sys_repo_admin.html @@ -12,8 +12,8 @@ {% trans "Name" %} ID {% trans "Owner" %} - {% trans "Description" %} - {% trans "Operations" %} + {% trans "Description" %} + {% trans "Operations" %} {% for repo in repos %} @@ -21,7 +21,11 @@ {{ repo.id }} {{ repo.owner}} {{ repo.props.desc }} - {% trans "Delete" %} + + {% trans "Delete" %} + {% trans "Transfer" %} + + {% endfor %} @@ -56,6 +60,18 @@ {% else %}

{% trans "Empty" %}

{% endif %} + +
{% csrf_token %} +

{% trans "Transfer Library"%}

+
+
+ + +

+ + +
+ {% endblock %} {% block extra_script %} @@ -69,6 +85,26 @@ $('#search-repo-btn').click(function() { location.href = "{% url 'sys_repo_search' %}"; }); +$('.repo-transfer-btn').click(function(){ + var repo_id = $(this).data('id'), + repo_name = $(this).data('name'), + form = $('#repo-transfer-form'); + + $('#repo-transfer-form input[name="repo_id"]').val(repo_id); + form.modal({appendTo:'#main'}); + return false; +}); + +$('#repo-transfer-form').submit(function() { + var form = $(this), + form_id = form.attr('id'), + email = $.trim(form.children('[name="email"]').val()); + if (!email) { + apply_form_error(form_id, "{% trans "Email cannot be blank" %}"); + return false; + } + form.submit(); +}); {% endblock %} diff --git a/seahub/urls.py b/seahub/urls.py index f9b2c63a7d..af2714c729 100644 --- a/seahub/urls.py +++ b/seahub/urls.py @@ -18,7 +18,7 @@ from seahub.views.wiki import personal_wiki, personal_wiki_pages, \ from seahub.views.sysadmin import sys_repo_admin, sys_user_admin, user_search,\ sys_group_admin, user_info, user_add, user_remove, user_make_admin, \ user_remove_admin, user_reset, user_activate, sys_publink_admin, \ - sys_repo_search + sys_repo_search, sys_repo_transfer from seahub.views.ajax import * # Uncomment the next two lines to enable the admin: @@ -145,6 +145,7 @@ urlpatterns = patterns('', ### system admin ### (r'^sys/seafadmin/$', sys_repo_admin), url(r'^sys/seafadmin/search/$', sys_repo_search, name='sys_repo_search'), + url(r'^sys/seafadmin/transfer/$', sys_repo_transfer, name='sys_repo_transfer'), url(r'^sys/useradmin/$', sys_user_admin, name='sys_useradmin'), url(r'^sys/groupadmin/$', sys_group_admin, name='sys_group_admin'), url(r'^sys/publinkadmin/$', sys_publink_admin, name='sys_publink_admin'), diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index 60bad7e923..421a639e3e 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -531,3 +531,26 @@ def user_search(request): 'page_next': page_next, }, context_instance=RequestContext(request)) +@login_required +@sys_staff_required +def sys_repo_transfer(request): + """Transfer a repo to others. + """ + if request.method != 'POST': + raise Http404 + + repo_id = request.POST.get('repo_id', None) + new_owner = request.POST.get('email', None) + + if repo_id and new_owner: + try: + User.objects.get(email=new_owner) + 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.')) + return HttpResponseRedirect(reverse(sys_repo_admin)) + +