diff --git a/seahub/api2/endpoints/admin/libraries.py b/seahub/api2/endpoints/admin/libraries.py index 7ce5617f03..015d2228c9 100644 --- a/seahub/api2/endpoints/admin/libraries.py +++ b/seahub/api2/endpoints/admin/libraries.py @@ -138,6 +138,40 @@ class AdminLibraries(APIView): return Response({"page_info": page_info, "repos": return_results}) + def post(self, request): + """ Admin create library + + Permission checking: + 1. only admin can perform this action. + """ + + repo_name = request.data.get('name', None) + if not repo_name: + error_msg = 'name invalid.' + return api_error(status.HTTP_400_BAD_REQUEST, error_msg) + + username = request.user.username + repo_owner = request.data.get('owner', None) + if repo_owner: + try: + User.objects.get(email=repo_owner) + except User.DoesNotExist: + error_msg = 'User %s not found.' % repo_owner + return api_error(status.HTTP_404_NOT_FOUND, error_msg) + else: + repo_owner = username + + try: + repo_id = seafile_api.create_repo(repo_name, '', repo_owner, None) + except Exception as e: + logger.error(e) + error_msg = 'Internal Server Error' + return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) + + repo = seafile_api.get_repo(repo_id) + repo_info = get_repo_info(repo) + return Response(repo_info) + class AdminLibrary(APIView): authentication_classes = (TokenAuthentication, SessionAuthentication) diff --git a/seahub/templates/js/sysadmin-templates.html b/seahub/templates/js/sysadmin-templates.html index 5eb415e17e..7a648b21fe 100644 --- a/seahub/templates/js/sysadmin-templates.html +++ b/seahub/templates/js/sysadmin-templates.html @@ -308,6 +308,9 @@ <% if (cur_tab == 'trash') { %> <% } %> + <% if (cur_tab == 'all') { %> + + <% } %> @@ -336,6 +339,19 @@ + +