1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-19 10:26:17 +00:00
Files
seahub/seahub/admin_log/models.py
Ranjiwei d1713ca7ab update (#6808)
* update

* Update account.py
2024-09-21 10:01:09 +08:00

83 lines
2.3 KiB
Python

# Copyright (c) 2012-2017 Seafile Ltd.
import json
import datetime
from django.db import models
from django.dispatch import receiver
from seahub.admin_log.signals import admin_operation
## operation: detail
# 'repo_create': {'id': repo_id, 'name': repo_name, 'owner': repo_owner}
REPO_CREATE = 'repo_create'
# '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'
# 'user_migrate': {'from': from_user, 'to': to_user}
USER_MIGRATE = 'user_migrate'
ADMIN_LOG_OPERATION_TYPE = (REPO_TRANSFER, REPO_DELETE,
GROUP_CREATE, GROUP_TRANSFER, GROUP_DELETE,
USER_ADD, USER_DELETE, USER_MIGRATE)
class AdminLogManager(models.Manager):
def add_admin_log(self, email, operation, detail):
model= super(AdminLogManager, self).create(
email=email, operation=operation, detail=detail)
model.save()
return model
def get_admin_logs(self, email=None, operation=None):
logs = super(AdminLogManager, self).all()
if email:
logs = logs.filter(email=email)
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.TextField()
datetime = models.DateTimeField(default=datetime.datetime.now)
objects = AdminLogManager()
class Meta:
ordering = ["-datetime"]
###### signal handlers
@receiver(admin_operation)
def admin_operation_cb(sender, **kwargs):
admin_name = kwargs['admin_name']
operation = kwargs['operation']
detail = kwargs['detail']
detail_json = json.dumps(detail)
AdminLog.objects.add_admin_log(admin_name,
operation, detail_json)