diff --git a/media/css/seahub.css b/media/css/seahub.css index 76bea893a6..67b54eb83e 100644 --- a/media/css/seahub.css +++ b/media/css/seahub.css @@ -2350,6 +2350,7 @@ button.sf-dropdown-toggle:focus { #folder-perm-popup .op-target { max-width:540px; } +#confirm-popup .op-target, #repo-transfer-form .op-target { max-width:200px; } @@ -2358,7 +2359,7 @@ button.sf-dropdown-toggle:focus { margin-top:30px; } .user-list .user { - display:inline-block; /*to handle different height of items*/ + display:inline-block; /* to handle different height of items */ vertical-align:top; width:330px; margin:0 17px 30px 0; diff --git a/seahub/api2/endpoints/admin/libraries.py b/seahub/api2/endpoints/admin/libraries.py index 32dcd1a5e0..80598b8d0a 100644 --- a/seahub/api2/endpoints/admin/libraries.py +++ b/seahub/api2/endpoints/admin/libraries.py @@ -20,6 +20,7 @@ from seahub.api2.utils import api_error logger = logging.getLogger(__name__) def get_repo_info(repo): + result = {} result['id'] = repo.repo_id result['name'] = repo.repo_name @@ -33,14 +34,57 @@ def get_repo_info(repo): class AdminLibraries(APIView): - """ return all libraries - """ - authentication_classes = (TokenAuthentication, SessionAuthentication) throttle_classes = (UserRateThrottle,) permission_classes = (IsAdminUser,) def get(self, request, format=None): + """ + List 'all' libraries (by name/owner/page) + """ + + ## search libraries (by name/owner) + repo_name = request.GET.get('name', '') + owner = request.GET.get('owner', '') + repos = [] + if repo_name and owner : + # search by name and owner + owned_repos = seafile_api.get_owned_repo_list(owner) + for repo in owned_repos: + if not repo.name: + continue + if repo_name in repo.name: + repo_info = get_repo_info(repo) + repos.append(repo_info) + + return Response({ + "name": repo_name, "owner": owner, "repos": repos}) + + elif repo_name: + # search by name(keyword in name) + repos_all = seafile_api.get_repo_list(-1, -1) + for repo in repos_all: + if not repo.name: + continue + if repo_name in repo.name: + repo_info = get_repo_info(repo) + repos.append(repo_info) + + return Response({ + "name": repo_name, "owner": '', "repos": repos}) + + elif owner: + # search by owner + owned_repos = seafile_api.get_owned_repo_list(owner) + for repo in owned_repos: + repo_info = get_repo_info(repo) + repos.append(repo_info) + + return Response({ + "name": '', "owner": owner, "repos": repos}) + + + ## get libraries by page try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '100')) @@ -73,7 +117,7 @@ class AdminLibraries(APIView): 'has_next_page': has_next_page, 'current_page': current_page } - return Response((page_info, return_results)) + return Response({"page_info": page_info, "repos": return_results}) class AdminLibrary(APIView): diff --git a/seahub/api2/endpoints/admin/trash_libraries.py b/seahub/api2/endpoints/admin/trash_libraries.py index 69731295d8..2988fb5128 100644 --- a/seahub/api2/endpoints/admin/trash_libraries.py +++ b/seahub/api2/endpoints/admin/trash_libraries.py @@ -9,6 +9,7 @@ from rest_framework import status from seaserv import seafile_api from pysearpc import SearpcError +from seahub.utils import is_valid_username from seahub.utils.timeutils import timestamp_to_isoformat_timestr from seahub.api2.authentication import TokenAuthentication @@ -25,28 +26,40 @@ class AdminTrashLibraries(APIView): permission_classes = (IsAdminUser,) def get(self, request, format=None): - """ get all deleted libraries """ + List deleted repos (by owner) + """ + search_owner = request.GET.get('owner', '') + if search_owner and is_valid_username(search_owner): + repos = seafile_api.get_trash_repos_by_owner(search_owner) + print 'by owner' + else: + repos = seafile_api.get_trash_repo_list(-1, -1) + search_owner = '' + print 'all' - repos_all = seafile_api.get_trash_repo_list(-1, -1) - return_results = [] - for repo in repos_all: + return_repos = [] + for repo in repos: result = {} result['name'] = repo.repo_name result['id'] = repo.repo_id result['owner'] = repo.owner_id result['delete_time'] = timestamp_to_isoformat_timestr(repo.del_time) - return_results.append(result) + return_repos.append(result) - return Response(return_results) + return Response({"search_owner": search_owner, "repos": return_repos}) def delete(self, request, format=None): - """ clean all deleted libraries + """ clean all deleted libraries(by owner) """ + search_owner = request.data.get('owner', '') try: - seafile_api.empty_repo_trash() + if search_owner and is_valid_username(search_owner): + seafile_api.empty_repo_trash_by_owner(search_owner) + else: + seafile_api.empty_repo_trash() except SearpcError as e: logger.error(e) error_msg = 'Internal Server Error' diff --git a/seahub/templates/js/sysadmin-templates.html b/seahub/templates/js/sysadmin-templates.html index 7ece74fde1..0592d88e29 100644 --- a/seahub/templates/js/sysadmin-templates.html +++ b/seahub/templates/js/sysadmin-templates.html @@ -15,7 +15,7 @@ {% endif %}
  • - {% trans "Libraries" %} + {% trans "Libraries" %}
  • {% trans "Users" %} @@ -57,6 +57,18 @@
  • {% endif %} + <% if (cur_tab == 'libraries') { %> + <% if (option == 'all') { %> +
    + +
    + <% } %> + <% if (option == 'trash') { %> +
    + +
    + <% } %> + <% } %> - + + + + @@ -390,12 +410,12 @@ <%= icon_title %> <%- name %> - <%- owner %> - + <%- owner %> + -{% endblock %} diff --git a/seahub/templates/sysadmin/base.html b/seahub/templates/sysadmin/base.html index 27a3d37cb0..59350b0481 100644 --- a/seahub/templates/sysadmin/base.html +++ b/seahub/templates/sysadmin/base.html @@ -23,7 +23,7 @@ {% endif %}
  • - {% trans "Libraries" %} + {% trans "Libraries" %}
  • {% trans "Users" %} diff --git a/seahub/templates/sysadmin/repoadmin_table.html b/seahub/templates/sysadmin/repoadmin_table.html deleted file mode 100644 index 910bc549f1..0000000000 --- a/seahub/templates/sysadmin/repoadmin_table.html +++ /dev/null @@ -1,41 +0,0 @@ -{% load i18n %} - - - - - - - - - - {% for repo in repos %} - - {% if repo.encrypted %} - - - {% else %} - - {% if enable_sys_admin_view_repo and is_pro_version %} - - {% else %} - - {% endif %} - {% endif %} - - - - - - {% endfor %} -
    {% trans "Name" %}{% trans "Files / Size" %}ID{% trans "Owner" %}{% trans "Operations" %}
    {% trans {{ repo.props.name }}{% trans {{ repo.props.name }}{{ repo.props.name }}{{ repo.file_count }} / {{ repo.size|filesizeformat }}{{ repo.id }} - {% if repo.owner %} - {{ repo.owner}} - {% else %} - -- - {% endif %} - - -
    diff --git a/seahub/templates/sysadmin/sys_list_system.html b/seahub/templates/sysadmin/sys_list_system.html deleted file mode 100644 index b12a494e39..0000000000 --- a/seahub/templates/sysadmin/sys_list_system.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "sysadmin/base.html" %} -{% load i18n %} -{% block cur_repo %}tab-cur{% endblock %} - -{% block right_panel %} -
    - -
    - -{% if repos %} - - - - - - - {% for repo in repos %} - - - - - - {% endfor %} -
    {% trans "Name" %}ID{% trans "Description" %}
    {{ repo.props.name }}{{ repo.id }}{{ repo.props.desc }}
    -{% else %} -

    {% trans "None" %}

    -{% endif %} - -{% endblock %} diff --git a/seahub/templates/sysadmin/sys_repo_admin.html b/seahub/templates/sysadmin/sys_repo_admin.html deleted file mode 100644 index 6c8541596b..0000000000 --- a/seahub/templates/sysadmin/sys_repo_admin.html +++ /dev/null @@ -1,41 +0,0 @@ -{% extends "sysadmin/base.html" %} -{% load i18n staticfiles %} -{% block cur_repo %}tab-cur{% endblock %} - -{% block extra_style %} - - -{% endblock %} - -{% block left_panel %}{{block.super}} -
    - -
    -{% endblock %} - -{% block right_panel %} -
    - -
    - -{% if repos %} -{% include "sysadmin/repoadmin_table.html" %} -{% include "snippets/admin_paginator.html" %} - -{% else %} -

    {% trans "None" %}

    -{% endif %} - -{% include "sysadmin/repo_transfer_form.html" %} -{% endblock %} - -{% block extra_script %} - - -{% endblock %} diff --git a/seahub/templates/sysadmin/sys_repo_search.html b/seahub/templates/sysadmin/sys_repo_search.html deleted file mode 100644 index 745f4e63e0..0000000000 --- a/seahub/templates/sysadmin/sys_repo_search.html +++ /dev/null @@ -1,45 +0,0 @@ -{% extends "sysadmin/base.html" %} -{% load seahub_tags i18n staticfiles %} - -{% block cur_repo %}tab-cur{% endblock %} - -{% block extra_style %} - - -{% endblock %} - -{% block right_panel %} -

    {% trans "Search Library"%}

    - -
    -

    {% trans "Tip: you can search by keyword in name or owner or both." %}

    -
    -
    - -
    - -

    {% trans "Result"%}

    -{% if repos %} -{% include "sysadmin/repoadmin_table.html" %} -{% else %} -

    {% trans "No result" %}

    -{% endif %} - -{% include "sysadmin/repo_transfer_form.html" %} -{% endblock %} - -{% block extra_script %} - - -{% endblock %} diff --git a/seahub/templates/sysadmin/sys_repo_trash.html b/seahub/templates/sysadmin/sys_repo_trash.html deleted file mode 100644 index e274ccffd2..0000000000 --- a/seahub/templates/sysadmin/sys_repo_trash.html +++ /dev/null @@ -1,84 +0,0 @@ -{% extends "sysadmin/base.html" %} -{% load i18n seahub_tags %} -{% block cur_repo %}tab-cur{% endblock %} - -{% block left_panel %}{{block.super}} -
    - -
    -{% endblock %} - -{% block right_panel %} -
    - -
    - -
    -
    - -{% if repos %} -

    {% trans "Tip: libraries deleted 30 days ago will be cleaned automatically."%}

    - - - - - - - - - {% for repo in repos %} - - - - - - - - {% endfor %} -
    {% trans "Name" %}{% trans "Owner" %}{% trans "Deleted Time" %}{% trans "Operations" %}
    {% trans {{ repo.repo_name }}{{ repo.owner_id }}{{ repo.del_time|translate_seahub_time }} - {% trans "Delete" %} - {% trans "Restore" %} -
    -{% if not search_owner %} -{% include "snippets/admin_paginator.html" %} -{% endif %} - -{% else %} -
    -

    {% trans "No library deleted yet" %}

    -
    -{% endif %} - -{% endblock %} - -{% block extra_script %} - -{% endblock %} diff --git a/seahub/templates/sysadmin/sysadmin_backbone.html b/seahub/templates/sysadmin/sysadmin_backbone.html index dd0d1a3d23..40b5b0eead 100644 --- a/seahub/templates/sysadmin/sysadmin_backbone.html +++ b/seahub/templates/sysadmin/sysadmin_backbone.html @@ -79,7 +79,6 @@ {% include 'js/sysadmin-templates.html' %} -{% include "js/dir-view.html" %} {% include "js/lib-op-popups.html" %}