perf: 优化清除日志天数系统配置校验逻辑

pull/11759/head
feng 2023-10-08 10:32:51 +08:00 committed by Bryan
parent dd50044b89
commit e71e8cd595
2 changed files with 9 additions and 34 deletions

View File

@ -204,14 +204,3 @@ MAX_LIMIT_PER_PAGE = CONFIG.MAX_LIMIT_PER_PAGE
# Magnus DB Port # Magnus DB Port
MAGNUS_ORACLE_PORTS = CONFIG.MAGNUS_ORACLE_PORTS MAGNUS_ORACLE_PORTS = CONFIG.MAGNUS_ORACLE_PORTS
LIMIT_SUPER_PRIV = CONFIG.LIMIT_SUPER_PRIV LIMIT_SUPER_PRIV = CONFIG.LIMIT_SUPER_PRIV
LOG_NAMES = [
'LOGIN_LOG_KEEP_DAYS', 'TASK_LOG_KEEP_DAYS',
'OPERATE_LOG_KEEP_DAYS', 'FTP_LOG_KEEP_DAYS',
'CLOUD_SYNC_TASK_EXECUTION_KEEP_DAYS',
'ACTIVITY_LOG_KEEP_DAYS', 'TERMINAL_SESSION_KEEP_DURATION'
]
if LIMIT_SUPER_PRIV:
for name in LOG_NAMES:
if globals()[name] < 180:
globals()[name] = 180

View File

@ -1,55 +1,41 @@
from django.conf import settings from django.conf import settings
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from rest_framework import serializers from rest_framework import serializers
from rest_framework.serializers import ValidationError
__all__ = ['CleaningSerializer'] __all__ = ['CleaningSerializer']
MIN_VALUE = 180 if settings.LIMIT_SUPER_PRIV else 1
class CleaningSerializer(serializers.Serializer): class CleaningSerializer(serializers.Serializer):
PREFIX_TITLE = _('Period clean') PREFIX_TITLE = _('Period clean')
LOGIN_LOG_KEEP_DAYS = serializers.IntegerField( LOGIN_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=1, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Login log keep days (day)"), label=_("Login log keep days (day)"),
) )
TASK_LOG_KEEP_DAYS = serializers.IntegerField( TASK_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=1, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Task log keep days (day)"), label=_("Task log keep days (day)"),
) )
OPERATE_LOG_KEEP_DAYS = serializers.IntegerField( OPERATE_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=1, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Operate log keep days (day)"), label=_("Operate log keep days (day)"),
) )
FTP_LOG_KEEP_DAYS = serializers.IntegerField( FTP_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=1, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("FTP log keep days (day)"), label=_("FTP log keep days (day)"),
) )
CLOUD_SYNC_TASK_EXECUTION_KEEP_DAYS = serializers.IntegerField( CLOUD_SYNC_TASK_EXECUTION_KEEP_DAYS = serializers.IntegerField(
min_value=1, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Cloud sync record keep days (day)"), label=_("Cloud sync record keep days (day)"),
) )
ACTIVITY_LOG_KEEP_DAYS = serializers.IntegerField( ACTIVITY_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=1, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Activity log keep days (day)"), label=_("Activity log keep days (day)"),
) )
TERMINAL_SESSION_KEEP_DURATION = serializers.IntegerField( TERMINAL_SESSION_KEEP_DURATION = serializers.IntegerField(
min_value=1, max_value=99999, required=True, label=_('Session keep duration (day)'), min_value=MIN_VALUE, max_value=99999, required=True, label=_('Session keep duration (day)'),
help_text=_( help_text=_(
'Session, record, command will be delete if more than duration, only in database, OSS will not be affected.') 'Session, record, command will be delete if more than duration, only in database, OSS will not be affected.')
) )
MIN_DAYS_THRESHOLD = 180
def validate(self, attrs):
attrs = super().validate(attrs)
if not settings.LIMIT_SUPER_PRIV:
return attrs
error_names = [
name for name in settings.LOG_NAMES
if attrs.get(name, 0) < self.MIN_DAYS_THRESHOLD
]
if error_names:
error_message = _('must be greater than {} days.').format(self.MIN_DAYS_THRESHOLD)
raise ValidationError({name: error_message for name in error_names})
return attrs