diff --git a/seahub/templates/sysadmin/org_admin_table.html b/seahub/templates/sysadmin/org_admin_table.html index 720d1b5e64..74aaa0ace9 100644 --- a/seahub/templates/sysadmin/org_admin_table.html +++ b/seahub/templates/sysadmin/org_admin_table.html @@ -22,7 +22,7 @@ {{ org.ctime|tsstr_sec }}
{% if org.expiration %}{{ org.expiration|date:'Y-m-d H:i:s' }}{% else %}--{% endif %} - {% trans "Delete" %} + {% trans "Delete" %} {% endfor %} diff --git a/seahub/urls.py b/seahub/urls.py index ba3604660c..c1dafa1c2b 100644 --- a/seahub/urls.py +++ b/seahub/urls.py @@ -223,6 +223,7 @@ urlpatterns = patterns( url(r'^sys/orgadmin/search/$', sys_org_search, name='sys_org_search'), url(r'^sys/orgadmin/(?P\d+)/set_quota/$', sys_org_set_quota, name='sys_org_set_quota'), url(r'^sys/orgadmin/(?P\d+)/rename/$', sys_org_rename, name='sys_org_rename'), + url(r'^sys/orgadmin/(?P\d+)/remove/$', sys_org_remove, name='sys_org_remove'), url(r'^sys/orgadmin/(?P\d+)/set_member_quota/$', sys_org_set_member_quota, name='sys_org_set_member_quota'), url(r'^sys/orgadmin/(?P\d+)/user/$', sys_org_info_user, name='sys_org_info_user'), url(r'^sys/orgadmin/(?P\d+)/group/$', sys_org_info_group, name='sys_org_info_group'), diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index bccd5be0a4..09a0803838 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -1300,6 +1300,35 @@ def sys_org_rename(request, org_id): return HttpResponseRedirect(next) +@login_required +@require_POST +@sys_staff_required +def sys_org_remove(request, org_id): + """Remove an org and all members/repos/groups. + + Arguments: + - `request`: + - `org_id`: + """ + org_id = int(org_id) + org = ccnet_threaded_rpc.get_org_by_id(org_id) + users = ccnet_threaded_rpc.get_org_emailusers(org.url_prefix, -1, -1) + for u in users: + ccnet_threaded_rpc.remove_org_user(org_id, u.email) + + groups = ccnet_threaded_rpc.get_org_groups(org.org_id, -1, -1) + for g in groups: + ccnet_threaded_rpc.remove_org_group(org_id, g.gid) + + # remove org repos + seafserv_threaded_rpc.remove_org_repo_by_org_id(org_id) + + # remove org + ccnet_threaded_rpc.remove_org(org_id) + + messages.success(request, _(u'Successfully deleted.')) + return HttpResponseRedirect(reverse('sys_org_admin')) + @login_required_ajax @sys_staff_required def sys_org_set_member_quota(request, org_id):