mirror of https://github.com/jumpserver/jumpserver
perf: change secret push record list
parent
9e4b82bf45
commit
15919085bc
|
@ -122,3 +122,12 @@ class AutomationExecutionViewSet(
|
||||||
execution = self.get_object()
|
execution = self.get_object()
|
||||||
report = execution.manager.gen_report()
|
report = execution.manager.gen_report()
|
||||||
return HttpResponse(report)
|
return HttpResponse(report)
|
||||||
|
|
||||||
|
|
||||||
|
class RecordListMixin:
|
||||||
|
def list(self, request, *args, **kwargs):
|
||||||
|
try:
|
||||||
|
response = super().list(request, *args, **kwargs)
|
||||||
|
except Exception as e:
|
||||||
|
response = Response({'detail': str(e)}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
return response
|
||||||
|
|
|
@ -15,7 +15,7 @@ from orgs.mixins.api import OrgBulkModelViewSet, OrgGenericViewSet
|
||||||
from rbac.permissions import RBACPermission
|
from rbac.permissions import RBACPermission
|
||||||
from .base import (
|
from .base import (
|
||||||
AutomationAssetsListApi, AutomationRemoveAssetApi, AutomationAddAssetApi,
|
AutomationAssetsListApi, AutomationRemoveAssetApi, AutomationAddAssetApi,
|
||||||
AutomationNodeAddRemoveApi, AutomationExecutionViewSet
|
AutomationNodeAddRemoveApi, AutomationExecutionViewSet, RecordListMixin
|
||||||
)
|
)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
@ -33,7 +33,7 @@ class ChangeSecretAutomationViewSet(OrgBulkModelViewSet):
|
||||||
serializer_class = serializers.ChangeSecretAutomationSerializer
|
serializer_class = serializers.ChangeSecretAutomationSerializer
|
||||||
|
|
||||||
|
|
||||||
class ChangeSecretRecordViewSet(mixins.ListModelMixin, OrgGenericViewSet):
|
class ChangeSecretRecordViewSet(RecordListMixin, mixins.ListModelMixin, OrgGenericViewSet):
|
||||||
filterset_class = ChangeSecretRecordFilterSet
|
filterset_class = ChangeSecretRecordFilterSet
|
||||||
search_fields = ('asset__address', 'account__username')
|
search_fields = ('asset__address', 'account__username')
|
||||||
ordering_fields = ('date_finished',)
|
ordering_fields = ('date_finished',)
|
||||||
|
|
|
@ -9,7 +9,7 @@ from accounts.models import PushAccountAutomation, PushSecretRecord
|
||||||
from orgs.mixins.api import OrgBulkModelViewSet, OrgGenericViewSet
|
from orgs.mixins.api import OrgBulkModelViewSet, OrgGenericViewSet
|
||||||
from .base import (
|
from .base import (
|
||||||
AutomationAssetsListApi, AutomationRemoveAssetApi, AutomationAddAssetApi,
|
AutomationAssetsListApi, AutomationRemoveAssetApi, AutomationAddAssetApi,
|
||||||
AutomationNodeAddRemoveApi, AutomationExecutionViewSet
|
AutomationNodeAddRemoveApi, AutomationExecutionViewSet, RecordListMixin
|
||||||
)
|
)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
@ -42,7 +42,7 @@ class PushAccountExecutionViewSet(AutomationExecutionViewSet):
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
class PushAccountRecordViewSet(mixins.ListModelMixin, OrgGenericViewSet):
|
class PushAccountRecordViewSet(RecordListMixin, mixins.ListModelMixin, OrgGenericViewSet):
|
||||||
filterset_class = PushAccountRecordFilterSet
|
filterset_class = PushAccountRecordFilterSet
|
||||||
search_fields = ('asset__address', 'account__username')
|
search_fields = ('asset__address', 'account__username')
|
||||||
ordering_fields = ('date_finished',)
|
ordering_fields = ('date_finished',)
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
import django_filters
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django_filters import rest_framework as drf_filters
|
from django_filters import rest_framework as drf_filters
|
||||||
from rest_framework import filters
|
from rest_framework import filters
|
||||||
from rest_framework.compat import coreapi
|
from rest_framework.compat import coreapi
|
||||||
|
@ -176,13 +180,27 @@ class SecretRecordMixin(drf_filters.FilterSet):
|
||||||
return queryset.filter(date_finished__gte=dt)
|
return queryset.filter(date_finished__gte=dt)
|
||||||
|
|
||||||
|
|
||||||
class ChangeSecretRecordFilterSet(SecretRecordMixin, BaseFilterSet):
|
class UUIDExecutionFilterMixin:
|
||||||
|
@staticmethod
|
||||||
|
def filter_execution(queryset, name, value):
|
||||||
|
try:
|
||||||
|
uuid.UUID(value)
|
||||||
|
except ValueError:
|
||||||
|
raise ValueError(_('Enter a valid UUID.'))
|
||||||
|
return queryset.filter(**{name: value})
|
||||||
|
|
||||||
|
|
||||||
|
class ChangeSecretRecordFilterSet(SecretRecordMixin, UUIDExecutionFilterMixin, BaseFilterSet):
|
||||||
|
execution_id = django_filters.CharFilter(method="filter_execution")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ChangeSecretRecord
|
model = ChangeSecretRecord
|
||||||
fields = ["id", "status", "asset_id", "execution"]
|
fields = ["id", "status", "asset_id", "execution_id"]
|
||||||
|
|
||||||
|
|
||||||
class PushAccountRecordFilterSet(SecretRecordMixin, BaseFilterSet):
|
class PushAccountRecordFilterSet(SecretRecordMixin, UUIDExecutionFilterMixin, BaseFilterSet):
|
||||||
|
execution_id = django_filters.CharFilter(method="filter_execution")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = PushSecretRecord
|
model = PushSecretRecord
|
||||||
fields = ["id", "status", "asset_id", "execution"]
|
fields = ["id", "status", "asset_id", "execution_id"]
|
||||||
|
|
Loading…
Reference in New Issue