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.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
|
||||||
|
|
||||||
|
|
|
@ -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()))
|
||||||
|
|
|
@ -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")
|
||||||
|
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in New Issue