mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-02 16:05:29 +00:00
feat: 重构操作日志 (#8941)
* feat:重构操作日志模块 * feat: 改密计划增加操作日志记录 * feat: 支持操作日志接入ES,且接口limit支持自定义限制大小 * feat:翻译 * feat: 生成迁移文件 * feat: 优化迁移文件 * feat: 优化多对多日志记录 * feat: 命令存储ES部分和日志存储ES部分代码优化 * feat: 优化敏感字段脱敏 Co-authored-by: Jiangjie.Bai <bugatti_it@163.com>
This commit is contained in:
@@ -43,11 +43,11 @@ class Migration(migrations.Migration):
|
||||
('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
|
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
|
||||
('message_type', models.CharField(max_length=128)),
|
||||
('receive_backends', models.JSONField(default=list)),
|
||||
('receive_backends', models.JSONField(default=list, verbose_name='receive backend')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_msg_subscription', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
'abstract': False, 'verbose_name': 'User message'
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
@@ -64,7 +64,7 @@ class Migration(migrations.Migration):
|
||||
('users', models.ManyToManyField(related_name='system_msg_subscriptions', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
'abstract': False, 'verbose_name': 'System message'
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
|
@@ -1,8 +1,8 @@
|
||||
# Generated by Django 3.1.12 on 2021-09-09 11:46
|
||||
|
||||
import common.db.models
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
def init_user_msg_subscription(apps, schema_editor):
|
||||
@@ -49,7 +49,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name='usermsgsubscription',
|
||||
name='user',
|
||||
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='user_msg_subscription', to=settings.AUTH_USER_MODEL),
|
||||
field=models.OneToOneField(on_delete=common.db.models.CASCADE_SIGNAL_SKIP, related_name='user_msg_subscription', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.RunPython(init_user_msg_subscription)
|
||||
]
|
||||
|
@@ -1,16 +1,23 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from common.db.models import JMSModel
|
||||
from common.db.models import JMSModel, CASCADE_SIGNAL_SKIP
|
||||
|
||||
__all__ = ('SystemMsgSubscription', 'UserMsgSubscription')
|
||||
|
||||
|
||||
class UserMsgSubscription(JMSModel):
|
||||
user = models.OneToOneField('users.User', related_name='user_msg_subscription', on_delete=models.CASCADE)
|
||||
receive_backends = models.JSONField(default=list)
|
||||
user = models.OneToOneField(
|
||||
'users.User', related_name='user_msg_subscription', on_delete=CASCADE_SIGNAL_SKIP,
|
||||
verbose_name=_('User')
|
||||
)
|
||||
receive_backends = models.JSONField(default=list, verbose_name=_('receive backend'))
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('User message')
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.user} subscription: {self.receive_backends}'
|
||||
return _('{} subscription').format(self.user)
|
||||
|
||||
|
||||
class SystemMsgSubscription(JMSModel):
|
||||
@@ -21,11 +28,19 @@ class SystemMsgSubscription(JMSModel):
|
||||
|
||||
message_type_label = ''
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.message_type}'
|
||||
class Meta:
|
||||
verbose_name = _('System message')
|
||||
|
||||
def __repr__(self):
|
||||
return self.__str__()
|
||||
def set_message_type_label(self):
|
||||
# 采用手动调用,没设置成 property 的方式
|
||||
# 因为目前只有界面修改时会用到这个属性,避免实例化时占用资源计算
|
||||
from ..notifications import system_msgs
|
||||
msg_label = ''
|
||||
for msg in system_msgs:
|
||||
if msg.get('message_type') == self.message_type:
|
||||
msg_label = msg.get('message_type_label', '')
|
||||
break
|
||||
self.message_type_label = msg_label
|
||||
|
||||
@property
|
||||
def receivers(self):
|
||||
@@ -47,3 +62,9 @@ class SystemMsgSubscription(JMSModel):
|
||||
receviers.append(recevier)
|
||||
|
||||
return receviers
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.message_type_label}' or f'{self.message_type}'
|
||||
|
||||
def __repr__(self):
|
||||
return self.__str__()
|
||||
|
@@ -22,6 +22,10 @@ class SystemMsgSubscriptionSerializer(BulkModelSerializer):
|
||||
'receive_backends': {'required': True}
|
||||
}
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
instance.set_message_type_label()
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
|
||||
class SystemMsgSubscriptionByCategorySerializer(serializers.Serializer):
|
||||
category = serializers.CharField()
|
||||
|
Reference in New Issue
Block a user