mirror of https://github.com/jumpserver/jumpserver
perf: Change secret filter days
parent
4fdb049c9d
commit
6f7da89e2e
|
@ -6,6 +6,7 @@ from rest_framework import status, mixins, viewsets
|
|||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
|
||||
from accounts.filters import AutomationExecutionFilterSet
|
||||
from accounts.models import AutomationExecution
|
||||
from accounts.tasks import execute_account_automation_task
|
||||
from assets import serializers
|
||||
|
@ -100,6 +101,7 @@ class AutomationExecutionViewSet(
|
|||
):
|
||||
search_fields = ('trigger', 'automation__name')
|
||||
filterset_fields = ('trigger', 'automation_id', 'automation__name')
|
||||
filterset_class = AutomationExecutionFilterSet
|
||||
serializer_class = serializers.AutomationExecutionSerializer
|
||||
tp: str
|
||||
|
||||
|
|
|
@ -38,6 +38,8 @@ class BaseAccountHandler:
|
|||
else:
|
||||
if isinstance(v, dict):
|
||||
v = v.get('label')
|
||||
elif v is None:
|
||||
v = ''
|
||||
data[k] = v
|
||||
return data
|
||||
|
||||
|
@ -196,8 +198,8 @@ class AccountBackupHandler:
|
|||
attachment_list = [attachment]
|
||||
AccountBackupExecutionTaskMsg(name, user).publish(attachment_list)
|
||||
|
||||
# for file in files:
|
||||
# os.remove(file)
|
||||
for file in files:
|
||||
os.remove(file)
|
||||
|
||||
def send_backup_obj_storage(self, files, recipients, password):
|
||||
if not files:
|
||||
|
@ -282,8 +284,7 @@ class AccountBackupHandler:
|
|||
else:
|
||||
recipients = recipients_part_one or recipients_part_two
|
||||
files = self.create_excel()
|
||||
print(files)
|
||||
# self.send_backup_mail(files, recipients)
|
||||
self.send_backup_mail(files, recipients)
|
||||
|
||||
def run(self):
|
||||
print('{}: {}'.format(_('Plan start'), local_now_display()))
|
||||
|
|
|
@ -15,7 +15,8 @@ from assets.utils import get_node_from_request
|
|||
from common.drf.filters import BaseFilterSet
|
||||
from common.utils.timezone import local_zero_hour, local_now
|
||||
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):
|
||||
|
@ -190,24 +191,41 @@ class UUIDExecutionFilterMixin:
|
|||
return queryset.filter(**{name: value})
|
||||
|
||||
|
||||
class ChangeSecretRecordFilterSet(SecretRecordMixin, UUIDExecutionFilterMixin, BaseFilterSet):
|
||||
execution_id = django_filters.CharFilter(method="filter_execution")
|
||||
class DaysExecutionFilterMixin:
|
||||
days = drf_filters.NumberFilter(method="filter_days")
|
||||
field: str
|
||||
|
||||
@staticmethod
|
||||
def filter_days(queryset, name, value):
|
||||
def filter_days(self, queryset, name, value):
|
||||
value = int(value)
|
||||
|
||||
dt = local_zero_hour()
|
||||
if value != 1:
|
||||
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:
|
||||
model = ChangeSecretRecord
|
||||
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):
|
||||
execution_id = django_filters.CharFilter(method="filter_execution")
|
||||
|
||||
|
|
|
@ -460,7 +460,10 @@ class AccountSecretSerializer(SecretReadableMixin, AccountSerializer):
|
|||
'secret': {'write_only': False},
|
||||
'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):
|
||||
|
|
|
@ -150,7 +150,7 @@ class BaseManager:
|
|||
recipients = self.execution.recipients
|
||||
if not recipients:
|
||||
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 = transform(report, cssutils_logging_level="CRITICAL")
|
||||
|
|
|
@ -3956,7 +3956,7 @@ msgstr "请输入动态安全码"
|
|||
msgid ""
|
||||
"The two-factor code you entered has either already been used or has expired. "
|
||||
"Please request a new one."
|
||||
msgstr ""
|
||||
msgstr "您输入的双重验证码已被使用或已过期。请申请新的双重验证码。"
|
||||
|
||||
#: authentication/mfa/custom.py:21
|
||||
msgid "MFA Custom code invalid"
|
||||
|
|
Loading…
Reference in New Issue