1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-02 15:38:15 +00:00

add admin api for get info of a single repo

This commit is contained in:
lian
2017-10-21 04:33:48 -07:00
parent 58ca1084ac
commit 36cdff75aa
2 changed files with 41 additions and 1 deletions

View File

@@ -20,6 +20,8 @@ from seahub.views import get_system_default_repo_id
from seahub.admin_log.signals import admin_operation
from seahub.admin_log.models import REPO_CREATE, REPO_DELETE, REPO_TRANSFER
from seahub.base.templatetags.seahub_tags import email2nickname, email2contact_email
try:
from seahub.settings import MULTI_TENANCY
except ImportError:
@@ -36,10 +38,15 @@ def get_repo_info(repo):
except Exception:
org_repo_owner = None
owner = repo_owner or org_repo_owner
result = {}
result['id'] = repo.repo_id
result['name'] = repo.repo_name
result['owner'] = repo_owner or org_repo_owner
result['owner'] = owner
result['owner_email'] = owner
result['owner_name'] = email2nickname(owner)
result['owner_contact_email'] = email2contact_email(owner)
result['size'] = repo.size
result['size_formatted'] = filesizeformat(repo.size)
result['encrypted'] = repo.encrypted
@@ -187,6 +194,21 @@ class AdminLibrary(APIView):
throttle_classes = (UserRateThrottle,)
permission_classes = (IsAdminUser,)
def get(self, request, repo_id, format=None):
""" get info of a library
Permission checking:
1. only admin can perform this action.
"""
repo = seafile_api.get_repo(repo_id)
if not repo:
error_msg = 'Library %s not found.' % repo_id
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
repo_info = get_repo_info(repo)
return Response(repo_info)
def delete(self, request, repo_id, format=None):
""" delete a library

View File

@@ -124,6 +124,24 @@ class AdminLibraryTest(BaseTestCase):
self.library_url = reverse('api-v2.1-admin-library', args=[self.repo_id])
def test_can_get(self):
self.login_as(self.admin)
resp = self.client.get(self.library_url)
self.assertEqual(200, resp.status_code)
json_resp = json.loads(resp.content)
assert json_resp['owner'] == self.user_name
assert json_resp['name'] == self.repo.repo_name
def test_get_with_invalid_user_permission(self):
self.login_as(self.user)
resp = self.client.get(self.library_url)
self.assertEqual(403, resp.status_code)
def test_can_transfer(self):
self.login_as(self.admin)