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