diff --git a/apps/accounts/api/automations/push_account.py b/apps/accounts/api/automations/push_account.py index 76caff498..e09873af5 100644 --- a/apps/accounts/api/automations/push_account.py +++ b/apps/accounts/api/automations/push_account.py @@ -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 diff --git a/apps/accounts/filters.py b/apps/accounts/filters.py index a4eda5ff6..1123bf712 100644 --- a/apps/accounts/filters.py +++ b/apps/accounts/filters.py @@ -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"] diff --git a/apps/accounts/serializers/automations/push_account.py b/apps/accounts/serializers/automations/push_account.py index b9982300b..5e571e345 100644 --- a/apps/accounts/serializers/automations/push_account.py +++ b/apps/accounts/serializers/automations/push_account.py @@ -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 diff --git a/apps/accounts/urls.py b/apps/accounts/urls.py index f196e1146..45a0ad7a8 100644 --- a/apps/accounts/urls.py +++ b/apps/accounts/urls.py @@ -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')