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:
@@ -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
|
||||
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user