mirror of https://github.com/jumpserver/jumpserver
perf: Push account record
parent
3fca8eaead
commit
8fa189235e
|
@ -1,10 +1,12 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
from rest_framework import mixins
|
||||
|
||||
from accounts import serializers
|
||||
from accounts.const import AutomationTypes
|
||||
from accounts.models import PushAccountAutomation
|
||||
from orgs.mixins.api import OrgBulkModelViewSet
|
||||
|
||||
from accounts.filters import PushAccountRecordFilterSet
|
||||
from accounts.models import PushAccountAutomation, PushSecretRecord
|
||||
from orgs.mixins.api import OrgBulkModelViewSet, OrgGenericViewSet
|
||||
from .base import (
|
||||
AutomationAssetsListApi, AutomationRemoveAssetApi, AutomationAddAssetApi,
|
||||
AutomationNodeAddRemoveApi, AutomationExecutionViewSet
|
||||
|
@ -13,6 +15,7 @@ from .base import (
|
|||
__all__ = [
|
||||
'PushAccountAutomationViewSet', 'PushAccountAssetsListApi', 'PushAccountRemoveAssetApi',
|
||||
'PushAccountAddAssetApi', 'PushAccountNodeAddRemoveApi', 'PushAccountExecutionViewSet',
|
||||
'PushAccountRecordViewSet'
|
||||
]
|
||||
|
||||
|
||||
|
@ -39,6 +42,22 @@ class PushAccountExecutionViewSet(AutomationExecutionViewSet):
|
|||
return queryset
|
||||
|
||||
|
||||
class PushAccountRecordViewSet(mixins.ListModelMixin, OrgGenericViewSet):
|
||||
filterset_class = PushAccountRecordFilterSet
|
||||
search_fields = ('asset__address', 'account_username')
|
||||
ordering_fields = ('date_finished',)
|
||||
tp = AutomationTypes.push_account
|
||||
serializer_classes = {
|
||||
'default': serializers.PushSecretRecordSerializer,
|
||||
}
|
||||
|
||||
def get_queryset(self):
|
||||
qs = PushSecretRecord.get_valid_records()
|
||||
return qs.filter(
|
||||
execution__automation__type=self.tp
|
||||
)
|
||||
|
||||
|
||||
class PushAccountAssetsListApi(AutomationAssetsListApi):
|
||||
model = PushAccountAutomation
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ from django_filters import rest_framework as drf_filters
|
|||
from assets.models import Node
|
||||
from common.drf.filters import BaseFilterSet
|
||||
from common.utils.timezone import local_zero_hour, local_now
|
||||
from .models import Account, GatheredAccount, ChangeSecretRecord
|
||||
from .models import Account, GatheredAccount, ChangeSecretRecord, PushSecretRecord
|
||||
|
||||
|
||||
class AccountFilterSet(BaseFilterSet):
|
||||
|
@ -134,7 +134,7 @@ class GatheredAccountFilterSet(BaseFilterSet):
|
|||
fields = ["id", "username"]
|
||||
|
||||
|
||||
class ChangeSecretRecordFilterSet(BaseFilterSet):
|
||||
class SecretRecordMixin:
|
||||
asset_name = drf_filters.CharFilter(
|
||||
field_name="asset__name", lookup_expr="icontains"
|
||||
)
|
||||
|
@ -155,6 +155,14 @@ class ChangeSecretRecordFilterSet(BaseFilterSet):
|
|||
dt = local_now() - timezone.timedelta(days=value)
|
||||
return queryset.filter(date_finished__gte=dt)
|
||||
|
||||
|
||||
class ChangeSecretRecordFilterSet(SecretRecordMixin, BaseFilterSet):
|
||||
class Meta:
|
||||
model = ChangeSecretRecord
|
||||
fields = ["id", "status", "asset_id", "execution"]
|
||||
|
||||
|
||||
class PushAccountRecordFilterSet(SecretRecordMixin, BaseFilterSet):
|
||||
class Meta:
|
||||
model = PushSecretRecord
|
||||
fields = ["id", "status", "asset_id", "execution"]
|
||||
|
|
|
@ -2,7 +2,7 @@ from accounts.const import AutomationTypes
|
|||
from accounts.models import PushAccountAutomation
|
||||
from .change_secret import (
|
||||
ChangeSecretAutomationSerializer, ChangeSecretUpdateAssetSerializer,
|
||||
ChangeSecretUpdateNodeSerializer
|
||||
ChangeSecretUpdateNodeSerializer, ChangeSecretRecordSerializer
|
||||
)
|
||||
|
||||
|
||||
|
@ -19,6 +19,10 @@ class PushAccountAutomationSerializer(ChangeSecretAutomationSerializer):
|
|||
return AutomationTypes.push_account
|
||||
|
||||
|
||||
class PushSecretRecordSerializer(ChangeSecretRecordSerializer):
|
||||
pass
|
||||
|
||||
|
||||
class PushAccountUpdateAssetSerializer(ChangeSecretUpdateAssetSerializer):
|
||||
class Meta:
|
||||
model = PushAccountAutomation
|
||||
|
|
|
@ -23,6 +23,7 @@ router.register(r'gather-account-automations', api.GatherAccountsAutomationViewS
|
|||
router.register(r'gather-account-executions', api.GatherAccountsExecutionViewSet, 'gather-account-execution')
|
||||
router.register(r'push-account-automations', api.PushAccountAutomationViewSet, 'push-account-automation')
|
||||
router.register(r'push-account-executions', api.PushAccountExecutionViewSet, 'push-account-execution')
|
||||
router.register(r'push-account-records', api.PushAccountRecordViewSet, 'push-account-record')
|
||||
router.register(r'check-account-automations', api.CheckAccountAutomationViewSet, 'check-account-automation')
|
||||
router.register(r'check-account-executions', api.CheckAccountExecutionViewSet, 'check-account-execution')
|
||||
router.register(r'account-check-engines', api.CheckAccountEngineViewSet, 'account-check-engine')
|
||||
|
|
Loading…
Reference in New Issue