1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-20 02:48:51 +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
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()

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, \
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})

View File

@@ -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)

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/(?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'),
# 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'),

View File

@@ -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: