mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-08 10:22:46 +00:00
update admin log
1. add log when admin create repo 1. add log when admin batch delete user 1. update test
This commit is contained in:
@@ -9,6 +9,8 @@ from seahub.admin_log.signals import admin_operation
|
||||
|
||||
## operation: detail
|
||||
|
||||
# 'repo_create': {'id': repo_id, 'name': repo_name, 'owner': repo_owner}
|
||||
REPO_CREATE = 'repo_create'
|
||||
# 'repo_transfer': {'id': repo_id, 'name': repo_name, 'from': from_user, 'to': to_user}
|
||||
REPO_TRANSFER = 'repo_transfer'
|
||||
# 'repo_delete': {'id': repo_id, 'name': repo_name, 'owner': repo_owner}
|
||||
|
@@ -18,7 +18,7 @@ from seahub.base.accounts import User
|
||||
from seahub.signals import repo_deleted
|
||||
from seahub.views import get_system_default_repo_id
|
||||
from seahub.admin_log.signals import admin_operation
|
||||
from seahub.admin_log.models import REPO_DELETE, REPO_TRANSFER
|
||||
from seahub.admin_log.models import REPO_CREATE, REPO_DELETE, REPO_TRANSFER
|
||||
|
||||
try:
|
||||
from seahub.settings import MULTI_TENANCY
|
||||
@@ -168,6 +168,15 @@ class AdminLibraries(APIView):
|
||||
error_msg = 'Internal Server Error'
|
||||
return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
|
||||
|
||||
# send admin operation log signal
|
||||
admin_op_detail = {
|
||||
"id": repo_id,
|
||||
"name": repo_name,
|
||||
"owner": repo_owner,
|
||||
}
|
||||
admin_operation.send(sender=None, admin_name=request.user.username,
|
||||
operation=REPO_CREATE, detail=admin_op_detail)
|
||||
|
||||
repo = seafile_api.get_repo(repo_id)
|
||||
repo_info = get_repo_info(repo)
|
||||
return Response(repo_info)
|
||||
|
@@ -17,6 +17,8 @@ from seahub.api2.utils import api_error
|
||||
|
||||
from seahub.base.accounts import User
|
||||
from seahub.utils.file_size import get_file_size_unit
|
||||
from seahub.admin_log.models import USER_DELETE
|
||||
from seahub.admin_log.signals import admin_operation
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -112,4 +114,11 @@ class AdminUsersBatch(APIView):
|
||||
'email': email,
|
||||
})
|
||||
|
||||
# send admin operation log signal
|
||||
admin_op_detail = {
|
||||
"email": email,
|
||||
}
|
||||
admin_operation.send(sender=None, admin_name=request.user.username,
|
||||
operation=USER_DELETE, detail=admin_op_detail)
|
||||
|
||||
return Response(result)
|
||||
|
@@ -712,16 +712,17 @@ def user_remove(request, email):
|
||||
|
||||
user.delete()
|
||||
messages.success(request, _(u'Successfully deleted %s') % user.username)
|
||||
|
||||
# send admin operation log signal
|
||||
admin_op_detail = {
|
||||
"email": email,
|
||||
}
|
||||
admin_operation.send(sender=None, admin_name=request.user.username,
|
||||
operation=USER_DELETE, detail=admin_op_detail)
|
||||
|
||||
except User.DoesNotExist:
|
||||
messages.error(request, _(u'Failed to delete: the user does not exist'))
|
||||
|
||||
# send admin operation log signal
|
||||
admin_op_detail = {
|
||||
"email": email,
|
||||
}
|
||||
admin_operation.send(sender=None, admin_name=request.user.username,
|
||||
operation=USER_DELETE, detail=admin_op_detail)
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
@login_required
|
||||
|
@@ -36,6 +36,13 @@ define([
|
||||
data.admin_user_url = user_url(data.email);
|
||||
|
||||
switch(this.model.get('operation')) {
|
||||
case 'repo_create':
|
||||
data.op_title = gettext("Create Library");
|
||||
data.op_details = gettext("Created library {name} with {owner} as its owner")
|
||||
.replace('{name}', '<span class="bold" title="' + detail.id + '">' + Common.HTMLescape(detail.name) + '</span>')
|
||||
.replace('{owner}', '<a href="' + user_url(detail.owner) + '">' + Common.HTMLescape(detail.owner) + '</a>');
|
||||
break;
|
||||
|
||||
case 'repo_delete':
|
||||
data.op_title = gettext("Delete Library");
|
||||
data.op_details = gettext("Deleted library {library_name}")
|
||||
|
@@ -1,6 +1,7 @@
|
||||
import json
|
||||
from mock import patch
|
||||
|
||||
from seaserv import ccnet_api
|
||||
from django.core.urlresolvers import reverse
|
||||
from seahub.test_utils import BaseTestCase
|
||||
from tests.common.utils import randstring
|
||||
@@ -17,13 +18,14 @@ class LogsTest(BaseTestCase):
|
||||
self.repo_id= self.repo.repo_id
|
||||
self.new_user = '%s@%s.com' % (randstring(6), randstring(6))
|
||||
self.library_url = reverse('api-v2.1-admin-library', args=[self.repo_id])
|
||||
self.admin_log_url = reverse('api-v2.1-admin-admin-logs')
|
||||
|
||||
def tearDown(self):
|
||||
self.remove_group()
|
||||
self.remove_repo()
|
||||
|
||||
@patch('seahub.api2.permissions.IsProVersion.has_permission')
|
||||
def test_can_get(self, mock_has_permission):
|
||||
def test_create_group(self, mock_has_permission):
|
||||
|
||||
mock_has_permission.return_value = True
|
||||
|
||||
@@ -35,19 +37,56 @@ class LogsTest(BaseTestCase):
|
||||
'group_owner': self.user.email
|
||||
}
|
||||
resp = self.client.post(url, data)
|
||||
json_resp = json.loads(resp.content)
|
||||
group_id = json_resp['id']
|
||||
self.assertEqual(201, resp.status_code)
|
||||
|
||||
# get admin log
|
||||
resp = self.client.get(self.admin_log_url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert json_resp['total_count'] == 1
|
||||
assert json_resp['data'][0]['operation'] == 'group_create'
|
||||
|
||||
self.remove_group(group_id)
|
||||
|
||||
@patch('seahub.api2.permissions.IsProVersion.has_permission')
|
||||
def test_transfer_group(self, mock_has_permission):
|
||||
|
||||
# admin transfer group
|
||||
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
||||
data = 'new_owner=%s' % self.admin_name
|
||||
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
# get admin log
|
||||
resp = self.client.get(self.admin_log_url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert json_resp['total_count'] == 1
|
||||
assert json_resp['data'][0]['operation'] == 'group_transfer'
|
||||
|
||||
@patch('seahub.api2.permissions.IsProVersion.has_permission')
|
||||
def test_delete_group(self, mock_has_permission):
|
||||
|
||||
# admin delete group
|
||||
url = reverse('api-v2.1-admin-group', args=[self.group_id])
|
||||
resp = self.client.delete(url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
# get admin log
|
||||
resp = self.client.get(self.admin_log_url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert json_resp['total_count'] == 1
|
||||
assert json_resp['data'][0]['operation'] == 'group_delete'
|
||||
|
||||
@patch('seahub.api2.permissions.IsProVersion.has_permission')
|
||||
def test_create_user(self, mock_has_permission):
|
||||
|
||||
# admin create user
|
||||
resp = self.client.post(
|
||||
reverse('user_add',), {
|
||||
@@ -58,25 +97,86 @@ class LogsTest(BaseTestCase):
|
||||
)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
# get admin log
|
||||
resp = self.client.get(self.admin_log_url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert json_resp['total_count'] == 1
|
||||
assert json_resp['data'][0]['operation'] == 'user_add'
|
||||
|
||||
@patch('seahub.api2.permissions.IsProVersion.has_permission')
|
||||
def test_delete_user(self, mock_has_permission):
|
||||
|
||||
# create a tmp user first
|
||||
ccnet_api.add_emailuser(self.new_user, 'password', 0, 1)
|
||||
|
||||
# admin delete user
|
||||
resp = self.client.post(
|
||||
reverse('user_remove', args=[self.new_user])
|
||||
)
|
||||
self.assertEqual(302, resp.status_code)
|
||||
|
||||
# get admin log
|
||||
resp = self.client.get(self.admin_log_url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert json_resp['total_count'] == 1
|
||||
assert json_resp['data'][0]['operation'] == 'user_delete'
|
||||
|
||||
@patch('seahub.api2.permissions.IsProVersion.has_permission')
|
||||
def test_transfer_library(self, mock_has_permission):
|
||||
|
||||
# admin transfer library
|
||||
data = 'owner=%s' % self.admin_name
|
||||
resp = self.client.put(self.library_url, data, 'application/x-www-form-urlencoded')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
# get admin log
|
||||
resp = self.client.get(self.admin_log_url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert json_resp['total_count'] == 1
|
||||
assert json_resp['data'][0]['operation'] == 'repo_transfer'
|
||||
|
||||
@patch('seahub.api2.permissions.IsProVersion.has_permission')
|
||||
def test_create_library(self, mock_has_permission):
|
||||
|
||||
# admin create library
|
||||
url = reverse('api-v2.1-admin-libraries')
|
||||
repo_name = randstring(10)
|
||||
data = {
|
||||
'name': repo_name,
|
||||
'owner': self.user.email
|
||||
}
|
||||
resp = self.client.post(url, data)
|
||||
json_resp = json.loads(resp.content)
|
||||
repo_id = json_resp['id']
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
# get admin log
|
||||
resp = self.client.get(self.admin_log_url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert json_resp['total_count'] == 1
|
||||
assert json_resp['data'][0]['operation'] == 'repo_create'
|
||||
|
||||
self.remove_repo(repo_id)
|
||||
|
||||
@patch('seahub.api2.permissions.IsProVersion.has_permission')
|
||||
def test_delete_library(self, mock_has_permission):
|
||||
|
||||
# admin delete library
|
||||
resp = self.client.delete(self.library_url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
# get admin log list
|
||||
url = reverse('api-v2.1-admin-admin-logs')
|
||||
resp = self.client.get(url)
|
||||
# get admin log
|
||||
resp = self.client.get(self.admin_log_url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
json_resp = json.loads(resp.content)
|
||||
assert json_resp['total_count'] == 7
|
||||
|
||||
assert json_resp['total_count'] == 1
|
||||
assert json_resp['data'][0]['operation'] == 'repo_delete'
|
||||
|
Reference in New Issue
Block a user