From 72ffdd54e62f1664d5a1824949b3f460117022ef Mon Sep 17 00:00:00 2001 From: lian Date: Tue, 21 Mar 2017 17:33:17 +0800 Subject: [PATCH] update admin log --- seahub/admin_log/models.py | 33 +++++++++++++----------- seahub/api2/endpoints/admin/groups.py | 7 ++--- seahub/api2/endpoints/admin/libraries.py | 5 ++-- seahub/urls.py | 1 - seahub/views/sysadmin.py | 7 ++--- 5 files changed, 29 insertions(+), 24 deletions(-) diff --git a/seahub/admin_log/models.py b/seahub/admin_log/models.py index 1ccf4d4906..a66af640f4 100644 --- a/seahub/admin_log/models.py +++ b/seahub/admin_log/models.py @@ -3,26 +3,32 @@ import json import datetime from django.db import models -from django.db.models import Q from django.dispatch import receiver from seahub.admin_log.signals import admin_operation -ADMIN_LOG_OPERATION_TYPE = ('repo_transfer', 'repo_delete', - 'group_create', 'group_transfer', 'group_delete', - 'user_add', 'user_delete') - ## operation: detail # '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} +REPO_DELETE = 'repo_delete' # 'group_create': {'id': group_id, 'name': group_name, 'owner': group_owner} +GROUP_CREATE = 'group_create' # 'group_transfer': {'id': group_id, 'name': group_name, 'from': from_user, 'to': to_user} +GROUP_TRANSFER = 'group_transfer' # 'group_delete': {'id': group_id, 'name': group_name, 'owner': group_owner} +GROUP_DELETE = 'group_delete' # 'user_add': {'email': new_user} +USER_ADD = 'user_add' # 'user_delete': {'email': deleted_user} +USER_DELETE = 'user_delete' + +ADMIN_LOG_OPERATION_TYPE = (REPO_TRANSFER, REPO_DELETE, + GROUP_CREATE, GROUP_TRANSFER, GROUP_DELETE, + USER_ADD, USER_DELETE) class AdminLogManager(models.Manager): @@ -40,21 +46,18 @@ class AdminLogManager(models.Manager): logs = super(AdminLogManager, self).all() - if email and operation: - filtered_logs = logs.filter(Q(email=email) & Q(operation = operation)) - elif email: - filtered_logs = logs.filter(email=email) - elif operation: - filtered_logs = logs.filter(operation=operation) - else: - filtered_logs = logs + if email: + logs = logs.filter(email=email) - return filtered_logs + if operation: + logs = logs.filter(operation=operation) + + return logs class AdminLog(models.Model): email = models.EmailField(db_index=True) operation = models.CharField(max_length=255, db_index=True) - detail = models.CharField(max_length=255) + detail = models.TextField() datetime = models.DateTimeField(default=datetime.datetime.now) objects = AdminLogManager() diff --git a/seahub/api2/endpoints/admin/groups.py b/seahub/api2/endpoints/admin/groups.py index f5c2afafd9..3ca1d1c19f 100644 --- a/seahub/api2/endpoints/admin/groups.py +++ b/seahub/api2/endpoints/admin/groups.py @@ -17,6 +17,7 @@ from seahub.utils.timeutils import timestamp_to_isoformat_timestr from seahub.group.utils import is_group_member, is_group_admin, \ validate_group_name, check_group_name_conflict from seahub.admin_log.signals import admin_operation +from seahub.admin_log.models import GROUP_CREATE, GROUP_DELETE, GROUP_TRANSFER from seahub.api2.utils import api_error from seahub.api2.throttling import UserRateThrottle from seahub.api2.authentication import TokenAuthentication @@ -146,7 +147,7 @@ class AdminGroups(APIView): "owner": new_owner, } admin_operation.send(sender=None, admin_name=username, - operation='group_create', detail=admin_op_detail) + operation=GROUP_CREATE, detail=admin_op_detail) # get info of new group group_info = get_group_info(group_id) @@ -216,7 +217,7 @@ class AdminGroup(APIView): "to": new_owner, } admin_operation.send(sender=None, admin_name=request.user.username, - operation='group_transfer', detail=admin_op_detail) + operation=GROUP_TRANSFER, detail=admin_op_detail) group_info = get_group_info(group_id) return Response(group_info) @@ -248,6 +249,6 @@ class AdminGroup(APIView): "owner": group_owner, } admin_operation.send(sender=None, admin_name=request.user.username, - operation='group_delete', detail=admin_op_detail) + operation=GROUP_DELETE, detail=admin_op_detail) return Response({'success': True}) diff --git a/seahub/api2/endpoints/admin/libraries.py b/seahub/api2/endpoints/admin/libraries.py index 1258c6b182..51ecd92a1e 100644 --- a/seahub/api2/endpoints/admin/libraries.py +++ b/seahub/api2/endpoints/admin/libraries.py @@ -18,6 +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 try: from seahub.settings import MULTI_TENANCY @@ -176,7 +177,7 @@ class AdminLibrary(APIView): "owner": repo_owner, } admin_operation.send(sender=None, admin_name=request.user.username, - operation='repo_delete', detail=admin_op_detail) + operation=REPO_DELETE, detail=admin_op_detail) return Response({'success': True}) @@ -275,7 +276,7 @@ class AdminLibrary(APIView): "to": new_owner, } admin_operation.send(sender=None, admin_name=request.user.username, - operation='repo_transfer', detail=admin_op_detail) + operation=REPO_TRANSFER, detail=admin_op_detail) repo = seafile_api.get_repo(repo_id) repo_info = get_repo_info(repo) diff --git a/seahub/urls.py b/seahub/urls.py index cbacceb12a..7e9524bc09 100644 --- a/seahub/urls.py +++ b/seahub/urls.py @@ -214,7 +214,6 @@ urlpatterns = patterns( url(r'^api/v2.1/admin/trash-libraries/$', AdminTrashLibraries.as_view(), name='api-v2.1-admin-trash-libraries'), url(r'^api/v2.1/admin/trash-libraries/(?P[-0-9a-f]{36})/$', AdminTrashLibrary.as_view(), name='api-v2.1-admin-trash-library'), url(r'^api/v2.1/admin/shares/$', AdminShares.as_view(), name='api-v2.1-admin-shares'), - # TODO url(r'^api/v2.1/admin/admin-logs/$', AdminLogs.as_view(), name='api-v2.1-admin-admin-logs'), url(r'^api/v2.1/admin/users/batch/$', AdminUsersBatch.as_view(), name='api-v2.1-admin-users-batch'), diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index 1f6d39f118..d65d66655a 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -59,6 +59,7 @@ from seahub.profile.models import Profile, DetailedProfile from seahub.signals import repo_deleted from seahub.share.models import FileShare, UploadLinkShare from seahub.admin_log.signals import admin_operation +from seahub.admin_log.models import USER_DELETE, USER_ADD import seahub.settings as settings from seahub.settings import INIT_PASSWD, SITE_NAME, SITE_ROOT, \ SEND_EMAIL_ON_ADDING_SYSTEM_MEMBER, SEND_EMAIL_ON_RESETTING_USER_PASSWD, \ @@ -717,7 +718,7 @@ def user_remove(request, email): "email": email, } admin_operation.send(sender=None, admin_name=request.user.username, - operation='user_delete', detail=admin_op_detail) + operation=USER_DELETE, detail=admin_op_detail) return HttpResponseRedirect(next) @@ -997,7 +998,7 @@ def user_add(request): "email": email, } admin_operation.send(sender=None, admin_name=request.user.username, - operation='user_add', detail=admin_op_detail) + operation=USER_ADD, detail=admin_op_detail) if user: User.objects.update_role(email, role) @@ -1884,7 +1885,7 @@ def batch_add_user(request): "email": username, } admin_operation.send(sender=None, admin_name=request.user.username, - operation='user_add', detail=admin_op_detail) + operation=USER_ADD, detail=admin_op_detail) messages.success(request, _('Import succeeded')) else: