perf: Change secret filter days

pull/15076/head
feng 2025-03-19 18:48:36 +08:00
parent 4fdb049c9d
commit 6f7da89e2e
6 changed files with 37 additions and 13 deletions

View File

@ -6,6 +6,7 @@ from rest_framework import status, mixins, viewsets
from rest_framework.decorators import action from rest_framework.decorators import action
from rest_framework.response import Response from rest_framework.response import Response
from accounts.filters import AutomationExecutionFilterSet
from accounts.models import AutomationExecution from accounts.models import AutomationExecution
from accounts.tasks import execute_account_automation_task from accounts.tasks import execute_account_automation_task
from assets import serializers from assets import serializers
@ -100,6 +101,7 @@ class AutomationExecutionViewSet(
): ):
search_fields = ('trigger', 'automation__name') search_fields = ('trigger', 'automation__name')
filterset_fields = ('trigger', 'automation_id', 'automation__name') filterset_fields = ('trigger', 'automation_id', 'automation__name')
filterset_class = AutomationExecutionFilterSet
serializer_class = serializers.AutomationExecutionSerializer serializer_class = serializers.AutomationExecutionSerializer
tp: str tp: str

View File

@ -38,6 +38,8 @@ class BaseAccountHandler:
else: else:
if isinstance(v, dict): if isinstance(v, dict):
v = v.get('label') v = v.get('label')
elif v is None:
v = ''
data[k] = v data[k] = v
return data return data
@ -196,8 +198,8 @@ class AccountBackupHandler:
attachment_list = [attachment] attachment_list = [attachment]
AccountBackupExecutionTaskMsg(name, user).publish(attachment_list) AccountBackupExecutionTaskMsg(name, user).publish(attachment_list)
# for file in files: for file in files:
# os.remove(file) os.remove(file)
def send_backup_obj_storage(self, files, recipients, password): def send_backup_obj_storage(self, files, recipients, password):
if not files: if not files:
@ -282,8 +284,7 @@ class AccountBackupHandler:
else: else:
recipients = recipients_part_one or recipients_part_two recipients = recipients_part_one or recipients_part_two
files = self.create_excel() files = self.create_excel()
print(files) self.send_backup_mail(files, recipients)
# self.send_backup_mail(files, recipients)
def run(self): def run(self):
print('{}: {}'.format(_('Plan start'), local_now_display())) print('{}: {}'.format(_('Plan start'), local_now_display()))

View File

@ -15,7 +15,8 @@ from assets.utils import get_node_from_request
from common.drf.filters import BaseFilterSet from common.drf.filters import BaseFilterSet
from common.utils.timezone import local_zero_hour, local_now from common.utils.timezone import local_zero_hour, local_now
from .const.automation import ChangeSecretRecordStatusChoice from .const.automation import ChangeSecretRecordStatusChoice
from .models import Account, GatheredAccount, ChangeSecretRecord, PushSecretRecord, IntegrationApplication from .models import Account, GatheredAccount, ChangeSecretRecord, PushSecretRecord, IntegrationApplication, \
AutomationExecution
class NodeFilterBackend(filters.BaseFilterBackend): class NodeFilterBackend(filters.BaseFilterBackend):
@ -190,24 +191,41 @@ class UUIDExecutionFilterMixin:
return queryset.filter(**{name: value}) return queryset.filter(**{name: value})
class ChangeSecretRecordFilterSet(SecretRecordMixin, UUIDExecutionFilterMixin, BaseFilterSet): class DaysExecutionFilterMixin:
execution_id = django_filters.CharFilter(method="filter_execution")
days = drf_filters.NumberFilter(method="filter_days") days = drf_filters.NumberFilter(method="filter_days")
field: str
@staticmethod def filter_days(self, queryset, name, value):
def filter_days(queryset, name, value):
value = int(value) value = int(value)
dt = local_zero_hour() dt = local_zero_hour()
if value != 1: if value != 1:
dt = local_now() - timezone.timedelta(days=value) dt = local_now() - timezone.timedelta(days=value)
return queryset.filter(date_finished__gte=dt) return queryset.filter(**{f'{self.field}__gte': dt})
class ChangeSecretRecordFilterSet(
SecretRecordMixin, UUIDExecutionFilterMixin,
DaysExecutionFilterMixin, BaseFilterSet
):
execution_id = django_filters.CharFilter(method="filter_execution")
days = drf_filters.NumberFilter(method="filter_days")
field = 'date_finished'
class Meta: class Meta:
model = ChangeSecretRecord model = ChangeSecretRecord
fields = ["id", "status", "asset_id", "execution_id"] fields = ["id", "status", "asset_id", "execution_id"]
class AutomationExecutionFilterSet(DaysExecutionFilterMixin, BaseFilterSet):
field = 'date_start'
class Meta:
model = AutomationExecution
fields = ["days", 'trigger', 'automation_id', 'automation__name']
class PushAccountRecordFilterSet(SecretRecordMixin, UUIDExecutionFilterMixin, BaseFilterSet): class PushAccountRecordFilterSet(SecretRecordMixin, UUIDExecutionFilterMixin, BaseFilterSet):
execution_id = django_filters.CharFilter(method="filter_execution") execution_id = django_filters.CharFilter(method="filter_execution")

View File

@ -460,7 +460,10 @@ class AccountSecretSerializer(SecretReadableMixin, AccountSerializer):
'secret': {'write_only': False}, 'secret': {'write_only': False},
'spec_info': {'label': _('Spec info')}, 'spec_info': {'label': _('Spec info')},
} }
exclude_backup_fields = ['passphrase', 'push_now', 'params'] exclude_backup_fields = [
'passphrase', 'push_now', 'params',
'spec_info', 'platform', 'auto_config'
]
class AccountHistorySerializer(serializers.ModelSerializer): class AccountHistorySerializer(serializers.ModelSerializer):

View File

@ -150,7 +150,7 @@ class BaseManager:
recipients = self.execution.recipients recipients = self.execution.recipients
if not recipients: if not recipients:
return return
print("Send report to: ", ",".join([str(u) for u in recipients])) print(f"Send report to: {','.join([str(u) for u in recipients])}")
report = self.gen_report() report = self.gen_report()
report = transform(report, cssutils_logging_level="CRITICAL") report = transform(report, cssutils_logging_level="CRITICAL")

View File

@ -3956,7 +3956,7 @@ msgstr "请输入动态安全码"
msgid "" msgid ""
"The two-factor code you entered has either already been used or has expired. " "The two-factor code you entered has either already been used or has expired. "
"Please request a new one." "Please request a new one."
msgstr "" msgstr "您输入的双重验证码已被使用或已过期。请申请新的双重验证码。"
#: authentication/mfa/custom.py:21 #: authentication/mfa/custom.py:21
msgid "MFA Custom code invalid" msgid "MFA Custom code invalid"