diff --git a/seahub/templates/sysadmin/sys_db_useradmin.html b/seahub/templates/sysadmin/sys_db_useradmin.html new file mode 100644 index 0000000000..7ad9666ded --- /dev/null +++ b/seahub/templates/sysadmin/sys_db_useradmin.html @@ -0,0 +1,159 @@ +{% extends "sysadmin/base.html" %} +{% load seahub_tags i18n %} +{% block cur_users %}tab-cur{% endblock %} + +{% block left_panel %}{{block.super}} +
+ +
+{% endblock %} + +{% block right_panel %} +
+ + +
+ +
{% csrf_token %} +

{% trans "Add admins"%}

+
+ +
+
+

{% trans "Tip: the emails should be the users already added."%}

+
+
+
+

+ +
+
+ + + + + + + + + + + {% for user in admin_users %} + + + + + + + + + + {% endfor %} +
{% trans "Email" %}{% trans "Status" %}{% trans "Space Used" %}{% trans "Create At / Last Login" %}{% trans "Operations" %}
{{ user.email }} + {% if user.source != 'LDAP' %} +
+ {% if user.is_active %} + {% trans "Active" %} + {% else %} + {% trans "Inactive" %} + {% endif %} + {% trans +
+ + {% endif %} +
+ {% if CALC_SHARE_USAGE %} + {{ user.self_usage|filesizeformat }} + {{ user.share_usage|filesizeformat }} {% if user.quota > 0 %} / {{ user.quota|filesizeformat }} {% endif %} + {% else %} + {{ user.self_usage|filesizeformat }} {% if user.quota > 0 %} / {{ user.quota|filesizeformat }} {% endif %} + {% endif %} + + {% if user.source != 'LDAP' %} + {{ user.ctime|tsstr_sec }} /
+ {% if user.last_login %}{{user.last_login|translate_seahub_time}} {% else %} -- {% endif %} + {% endif %} +
+ {% if user.source != 'LDAP' %} + {% if not user.is_self %} + {% trans "Delete" %} + {% trans "ResetPwd" %} + {% if user.is_staff %} + {% trans "Revoke Admin" %} + {% else %} + {% trans "Set Admin" %} + {% endif %} + {% endif %} + {% endif %} +
+ +
+

{% trans "Activating..., please wait" %}

+
+{% endblock %} + +{% block extra_script %} + +{% endblock %} diff --git a/seahub/templates/sysadmin/sys_useradmin.html b/seahub/templates/sysadmin/sys_useradmin.html index 54fb662ae3..96356b3e48 100644 --- a/seahub/templates/sysadmin/sys_useradmin.html +++ b/seahub/templates/sysadmin/sys_useradmin.html @@ -9,20 +9,16 @@ {% endblock %} {% block right_panel %} -
-
-
{% csrf_token %}

{% trans "Add user" %}

@@ -35,52 +31,17 @@

-
{% csrf_token %} -

{% trans "Add admins"%}

-
- -
-
-

{% trans "Tip: the emails should be the users already added."%}

-
-
-
-

- -
-
- {% include "sysadmin/useradmin_table.html"%} +{% include "sysadmin/useradmin_table.html"%} +{% include "sysadmin/useradmin_paginator.html" %} -
-

{% trans "Activating..., please wait" %}

-
+
+

{% trans "Activating..., please wait" %}

{% endblock %} {% block extra_script %} {% endblock %} diff --git a/seahub/templates/sysadmin/useradmin_table.html b/seahub/templates/sysadmin/useradmin_table.html index d0f87a0025..0ed8f40acc 100644 --- a/seahub/templates/sysadmin/useradmin_table.html +++ b/seahub/templates/sysadmin/useradmin_table.html @@ -1,126 +1,55 @@ {% load seahub_tags i18n %} -
- - - - - - - - +
{% trans "Email" %}{% trans "Status" %}{% trans "Space Used" %}{% trans "Create At / Last Login" %}{% trans "Operations" %}
+ + + + + + + - {% for user in users %} - - + {% for user in users %} + + - - - - - - - {% endfor %} -
{% trans "Email" %}{% trans "Status" %}{% trans "Space Used" %}{% trans "Create At / Last Login" %}{% trans "Operations" %}
{{ user.email }}
{{ user.email }} - {% if user.source != 'LDAP' %} -
- {% if user.is_active %} - {% trans "Active" %} - {% else %} - {% trans "Inactive" %} - {% endif %} - {% trans -
- - {% endif %} -
- {% if CALC_SHARE_USAGE %} - {{ user.self_usage|filesizeformat }} + {{ user.share_usage|filesizeformat }} {% if user.quota > 0 %} / {{ user.quota|filesizeformat }} {% endif %} - {% else %} - {{ user.self_usage|filesizeformat }} {% if user.quota > 0 %} / {{ user.quota|filesizeformat }} {% endif %} - {% endif %} - - {% if user.source != 'LDAP' %} - {{ user.ctime|tsstr_sec }} /
- {% if user.last_login %}{{user.last_login|translate_seahub_time}} {% else %} -- {% endif %} - {% endif %} -
- {% if user.source != 'LDAP' %} - {% if not user.is_self %} - {% trans "Delete" %} - {% trans "ResetPwd" %} - {%comment%} - {% if user.is_staff %} - {% trans "Revoke Admin" %} + + {% if user.source != 'LDAP' %} +
+ {% if user.is_active %} + {% trans "Active" %} {% else %} - {% trans "Set Admin" %} + {% trans "Inactive" %} {% endif %} - {%endcomment%} - {% endif %} - {% endif %} -
- {% include "sysadmin/useradmin_paginator.html" %} -
-
- - - - - - - - - - {% for user in users %} - {% if user.is_staff %} - - - - - - - - - - {% endif %} - {% endfor %} -
{% trans "Email" %}{% trans "Status" %}{% trans "Space Used" %}{% trans "Create At / Last Login" %}{% trans "Operations" %}
{{ user.email }} - {% if user.source != 'LDAP' %} -
- {% if user.is_active %} - {% trans "Active" %} - {% else %} - {% trans "Inactive" %} - {% endif %} - {% trans -
- - {% endif %} -
- {% if CALC_SHARE_USAGE %} - {{ user.self_usage|filesizeformat }} + {{ user.share_usage|filesizeformat }} {% if user.quota > 0 %} / {{ user.quota|filesizeformat }} {% endif %} - {% else %} - {{ user.self_usage|filesizeformat }} {% if user.quota > 0 %} / {{ user.quota|filesizeformat }} {% endif %} - {% endif %} - - {% if user.source != 'LDAP' %} - {{ user.ctime|tsstr_sec }} /
- {% if user.last_login %}{{user.last_login|translate_seahub_time}} {% else %} -- {% endif %} - {% endif %} -
- {% if user.source != 'LDAP' %} - {% if not user.is_self %} - {% trans "Delete" %} - {% trans "ResetPwd" %} - {% trans "Revoke Admin" %} - {% else %} - {% endif %} - {% endif %} -
-
- + {% trans +
+ + {% endif %} + + + + {% if CALC_SHARE_USAGE %} + {{ user.self_usage|filesizeformat }} + {{ user.share_usage|filesizeformat }} {% if user.quota > 0 %} / {{ user.quota|filesizeformat }} {% endif %} + {% else %} + {{ user.self_usage|filesizeformat }} {% if user.quota > 0 %} / {{ user.quota|filesizeformat }} {% endif %} + {% endif %} + + + {% if user.source != 'LDAP' %} + {{ user.ctime|tsstr_sec }} /
+ {% if user.last_login %}{{user.last_login|translate_seahub_time}} {% else %} -- {% endif %} + {% endif %} + + + {% if user.source != 'LDAP' %} + {% if not user.is_self %} + {% trans "Delete" %} + {% trans "ResetPwd" %} + {% endif %} + {% endif %} + + + {% endfor %} + diff --git a/seahub/urls.py b/seahub/urls.py index 6f1154634b..69e9914472 100644 --- a/seahub/urls.py +++ b/seahub/urls.py @@ -21,7 +21,7 @@ from seahub.views.sysadmin import sys_repo_admin, sys_user_admin, user_search,\ user_remove_admin, user_reset, user_activate, sys_publink_admin, \ sys_repo_search, sys_repo_transfer, sys_list_orphan, user_deactivate, \ user_toggle_status, user_set_quota, sys_ldap_user_admin, sys_list_system, \ - batch_user_make_admin + batch_user_make_admin, sys_db_user_admin from seahub.views.ajax import * # Uncomment the next two lines to enable the admin: @@ -184,6 +184,7 @@ urlpatterns = patterns('', 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/ldapuseradmin/$', sys_ldap_user_admin, name='sys_ldap_useradmin'), + url(r'^sys/dbuseradmin/$', sys_db_user_admin, name='sys_db_useradmin'), url(r'^sys/groupadmin/$', sys_group_admin, name='sys_group_admin'), url(r'^sys/publinkadmin/$', sys_publink_admin, name='sys_publink_admin'), url(r'^sys/notificationadmin/', notification_list, name='notification_list'), diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index a796deb285..73bb36e9aa 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -709,9 +709,60 @@ def sys_traffic_admin(request): }, context_instance=RequestContext(request)) +@login_required +@sys_staff_required +def sys_db_user_admin(request): + """List all admins from database. + """ + users = get_emailusers('DB', -1, -1) + + admin_users = [] + not_admin_users = [] + for user in users: + if user.is_staff == True: + admin_users.append(user) + else: + not_admin_users.append(user) + + last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in admin_users]) + + for user in admin_users: + if user.props.id == request.user.id: + user.is_self = True + 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) + except: + user.self_usage = -1 + user.share_usage = -1 + user.quota = -1 + # populate user last login time + user.last_login = None + for last_login in last_logins: + if last_login.username == user.email: + user.last_login = last_login.last_login + + have_ldap = True if len(get_emailusers('LDAP', 0, 1)) > 0 else False + + return render_to_response( + 'sysadmin/sys_db_useradmin.html', { + 'admin_users': admin_users, + 'not_admin_users': not_admin_users, + 'CALC_SHARE_USAGE': CALC_SHARE_USAGE, + 'have_ldap': have_ldap, + }, + context_instance=RequestContext(request)) + @login_required @sys_staff_required def batch_user_make_admin(request): + + if not request.user.is_staff and not request.user.org['is_staff']: + raise Http404 + if not request.is_ajax() or request.method != 'POST': + raise Http404 + result = {} content_type = 'application/json; charset=utf-8' @@ -720,21 +771,31 @@ def batch_user_make_admin(request): success = [] failed = [] + already_admin = [] + + if len(get_emailusers('LDAP', 0, 1)) > 0: + messages.error(request, _(u'Using LDAP now, can not set admin')) + result['success'] = True + return HttpResponse(json.dumps(result), content_type=content_type) for email in set_admin_emails: try: user = User.objects.get(email=email) - user.is_staff = True - user.save() - success.append(email) + if user.is_staff == True: + already_admin.append(email) + else: + user.is_staff = True + user.save() + success.append(email) except User.DoesNotExist: failed.append(email) for item in success: messages.success(request, _(u'Successfully set %s as admin') % item) for item in failed: - messages.error(request, _(u'Failed set %s as admin') % item) + messages.error(request, _(u'Failed set %s as admin: not exist or invalid email') % item) + for item in already_admin: + messages.error(request, _(u'Failed set %s as admin: already admin user') % item) result['success'] = True return HttpResponse(json.dumps(result), content_type=content_type) -