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