From 163302e8095033d71093a3e6bafe5dfa0b59a2f3 Mon Sep 17 00:00:00 2001 From: zhengxie Date: Fri, 17 Oct 2014 10:35:58 +0800 Subject: [PATCH 1/2] [sysadmin] Check org creator when removing user --- seahub/views/sysadmin.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index 921a16a4c7..8e96eaf26a 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -430,23 +430,28 @@ def sys_org_set_quota(request, org_id): @login_required @sys_staff_required def user_remove(request, user_id): - """Remove user, also remove group relationship.""" + """Remove user""" + referer = request.META.get('HTTP_REFERER', None) + next = reverse('sys_useradmin') if referer is None else referer + try: user = User.objects.get(id=int(user_id)) org = ccnet_threaded_rpc.get_orgs_by_user(user.email) if org: + if org[0].creator == user.email: + messages.error(request, _(u'Failed to delete: the user is an organization creator')) + return HttpResponseRedirect(next) + org_id = org[0].org_id org_repos = seafile_api.get_org_owned_repo_list(org_id, user.email) for repo in org_repos: seafile_api.remove_repo(repo.id) + user.delete() messages.success(request, _(u'Successfully deleted %s') % user.username) except User.DoesNotExist: messages.error(request, _(u'Failed to delete: the user does not exist')) - referer = request.META.get('HTTP_REFERER', None) - next = reverse('sys_useradmin') if referer is None else referer - return HttpResponseRedirect(next) @login_required From cd50da0cb8085199669970a28b43fd09806f9826 Mon Sep 17 00:00:00 2001 From: zhengxie Date: Fri, 17 Oct 2014 11:20:11 +0800 Subject: [PATCH 2/2] [sysadmin] Show org name when list users --- seahub/templates/sysadmin/useradmin_table.html | 6 +++++- seahub/views/sysadmin.py | 17 +++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/seahub/templates/sysadmin/useradmin_table.html b/seahub/templates/sysadmin/useradmin_table.html index a0f2b4f129..f5d961a109 100644 --- a/seahub/templates/sysadmin/useradmin_table.html +++ b/seahub/templates/sysadmin/useradmin_table.html @@ -11,7 +11,11 @@ {% for user in users %} - {{ user.email }} + {{ user.email }} + {% if user.org %} +

({{user.org.org_name}})

+ {% endif %} + {% if user.source != 'LDAP' %}
diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index 8e96eaf26a..ba70384023 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -181,7 +181,8 @@ def sys_user_admin(request): user.share_usage = seafile_api.get_user_share_usage(user.email) user.quota = seafile_api.get_user_quota(user.email) else: - org_id = org[0].org_id + user.org = org[0] + org_id = user.org.org_id user.self_usage = seafserv_threaded_rpc.get_org_user_quota_usage(org_id, user.email) user.share_usage = 0 #seafile_api.get_user_share_usage(user.email) user.quota = seafserv_threaded_rpc.get_org_user_quota(org_id, user.email) @@ -879,10 +880,18 @@ def user_search(request): users = ccnet_threaded_rpc.search_emailusers(email, -1, -1) last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users]) for user in users: + org = ccnet_threaded_rpc.get_orgs_by_user(user.email) try: - user.self_usage = seafile_api.get_user_self_usage(user.email) - user.share_usage = seafile_api.get_user_share_usage(user.email) - user.quota = seafile_api.get_user_quota(user.email) + if not org: + user.self_usage = seafile_api.get_user_self_usage(user.email) + user.share_usage = seafile_api.get_user_share_usage(user.email) + user.quota = seafile_api.get_user_quota(user.email) + else: + user.org = org[0] + org_id = user.org.org_id + user.self_usage = seafserv_threaded_rpc.get_org_user_quota_usage(org_id, user.email) + user.share_usage = 0 + user.quota = seafserv_threaded_rpc.get_org_user_quota(org_id, user.email) except SearpcError as e: logger.error(e) user.self_usage = -1