1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-20 10:58:33 +00:00

update admin log

This commit is contained in:
lian
2017-03-21 17:33:17 +08:00
parent acf79cf1aa
commit 72ffdd54e6
5 changed files with 29 additions and 24 deletions

View File

@@ -3,26 +3,32 @@ import json
import datetime import datetime
from django.db import models from django.db import models
from django.db.models import Q
from django.dispatch import receiver from django.dispatch import receiver
from seahub.admin_log.signals import admin_operation 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 ## operation: detail
# 'repo_transfer': {'id': repo_id, 'name': repo_name, 'from': from_user, 'to': to_user} # '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': {'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': {'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': {'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': {'id': group_id, 'name': group_name, 'owner': group_owner}
GROUP_DELETE = 'group_delete'
# 'user_add': {'email': new_user} # 'user_add': {'email': new_user}
USER_ADD = 'user_add'
# 'user_delete': {'email': deleted_user} # '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): class AdminLogManager(models.Manager):
@@ -40,21 +46,18 @@ class AdminLogManager(models.Manager):
logs = super(AdminLogManager, self).all() logs = super(AdminLogManager, self).all()
if email and operation: if email:
filtered_logs = logs.filter(Q(email=email) & Q(operation = operation)) logs = logs.filter(email=email)
elif email:
filtered_logs = logs.filter(email=email)
elif operation:
filtered_logs = logs.filter(operation=operation)
else:
filtered_logs = logs
return filtered_logs if operation:
logs = logs.filter(operation=operation)
return logs
class AdminLog(models.Model): class AdminLog(models.Model):
email = models.EmailField(db_index=True) email = models.EmailField(db_index=True)
operation = models.CharField(max_length=255, 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) datetime = models.DateTimeField(default=datetime.datetime.now)
objects = AdminLogManager() objects = AdminLogManager()

View File

@@ -17,6 +17,7 @@ from seahub.utils.timeutils import timestamp_to_isoformat_timestr
from seahub.group.utils import is_group_member, is_group_admin, \ from seahub.group.utils import is_group_member, is_group_admin, \
validate_group_name, check_group_name_conflict validate_group_name, check_group_name_conflict
from seahub.admin_log.signals import admin_operation 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.utils import api_error
from seahub.api2.throttling import UserRateThrottle from seahub.api2.throttling import UserRateThrottle
from seahub.api2.authentication import TokenAuthentication from seahub.api2.authentication import TokenAuthentication
@@ -146,7 +147,7 @@ class AdminGroups(APIView):
"owner": new_owner, "owner": new_owner,
} }
admin_operation.send(sender=None, admin_name=username, 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 # get info of new group
group_info = get_group_info(group_id) group_info = get_group_info(group_id)
@@ -216,7 +217,7 @@ class AdminGroup(APIView):
"to": new_owner, "to": new_owner,
} }
admin_operation.send(sender=None, admin_name=request.user.username, 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) group_info = get_group_info(group_id)
return Response(group_info) return Response(group_info)
@@ -248,6 +249,6 @@ class AdminGroup(APIView):
"owner": group_owner, "owner": group_owner,
} }
admin_operation.send(sender=None, admin_name=request.user.username, 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}) return Response({'success': True})

View File

@@ -18,6 +18,7 @@ from seahub.base.accounts import User
from seahub.signals import repo_deleted from seahub.signals import repo_deleted
from seahub.views import get_system_default_repo_id from seahub.views import get_system_default_repo_id
from seahub.admin_log.signals import admin_operation from seahub.admin_log.signals import admin_operation
from seahub.admin_log.models import REPO_DELETE, REPO_TRANSFER
try: try:
from seahub.settings import MULTI_TENANCY from seahub.settings import MULTI_TENANCY
@@ -176,7 +177,7 @@ class AdminLibrary(APIView):
"owner": repo_owner, "owner": repo_owner,
} }
admin_operation.send(sender=None, admin_name=request.user.username, 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}) return Response({'success': True})
@@ -275,7 +276,7 @@ class AdminLibrary(APIView):
"to": new_owner, "to": new_owner,
} }
admin_operation.send(sender=None, admin_name=request.user.username, 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 = seafile_api.get_repo(repo_id)
repo_info = get_repo_info(repo) repo_info = get_repo_info(repo)

View File

@@ -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/$', AdminTrashLibraries.as_view(), name='api-v2.1-admin-trash-libraries'),
url(r'^api/v2.1/admin/trash-libraries/(?P<repo_id>[-0-9a-f]{36})/$', AdminTrashLibrary.as_view(), name='api-v2.1-admin-trash-library'), url(r'^api/v2.1/admin/trash-libraries/(?P<repo_id>[-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'), 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/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'), url(r'^api/v2.1/admin/users/batch/$', AdminUsersBatch.as_view(), name='api-v2.1-admin-users-batch'),

View File

@@ -59,6 +59,7 @@ from seahub.profile.models import Profile, DetailedProfile
from seahub.signals import repo_deleted from seahub.signals import repo_deleted
from seahub.share.models import FileShare, UploadLinkShare from seahub.share.models import FileShare, UploadLinkShare
from seahub.admin_log.signals import admin_operation from seahub.admin_log.signals import admin_operation
from seahub.admin_log.models import USER_DELETE, USER_ADD
import seahub.settings as settings import seahub.settings as settings
from seahub.settings import INIT_PASSWD, SITE_NAME, SITE_ROOT, \ from seahub.settings import INIT_PASSWD, SITE_NAME, SITE_ROOT, \
SEND_EMAIL_ON_ADDING_SYSTEM_MEMBER, SEND_EMAIL_ON_RESETTING_USER_PASSWD, \ SEND_EMAIL_ON_ADDING_SYSTEM_MEMBER, SEND_EMAIL_ON_RESETTING_USER_PASSWD, \
@@ -717,7 +718,7 @@ def user_remove(request, email):
"email": email, "email": email,
} }
admin_operation.send(sender=None, admin_name=request.user.username, 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) return HttpResponseRedirect(next)
@@ -997,7 +998,7 @@ def user_add(request):
"email": email, "email": email,
} }
admin_operation.send(sender=None, admin_name=request.user.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)
if user: if user:
User.objects.update_role(email, role) User.objects.update_role(email, role)
@@ -1884,7 +1885,7 @@ def batch_add_user(request):
"email": username, "email": username,
} }
admin_operation.send(sender=None, admin_name=request.user.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')) messages.success(request, _('Import succeeded'))
else: else: