mirror of https://github.com/jumpserver/jumpserver
perf: 优化账号历史过滤
parent
fc4a77df1a
commit
12adf66f41
|
@ -8,6 +8,7 @@ from accounts import serializers
|
||||||
from accounts.filters import AccountFilterSet
|
from accounts.filters import AccountFilterSet
|
||||||
from accounts.models import Account
|
from accounts.models import Account
|
||||||
from assets.models import Asset, Node
|
from assets.models import Asset, Node
|
||||||
|
from common.api import ExtraFilterFieldsMixin
|
||||||
from common.permissions import UserConfirmation, ConfirmType, IsValidUser
|
from common.permissions import UserConfirmation, ConfirmType, IsValidUser
|
||||||
from common.views.mixins import RecordViewLogMixin
|
from common.views.mixins import RecordViewLogMixin
|
||||||
from orgs.mixins.api import OrgBulkModelViewSet
|
from orgs.mixins.api import OrgBulkModelViewSet
|
||||||
|
@ -111,7 +112,7 @@ class AssetAccountBulkCreateApi(CreateAPIView):
|
||||||
return Response(data=serializer.data, status=HTTP_200_OK)
|
return Response(data=serializer.data, status=HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
class AccountHistoriesSecretAPI(RecordViewLogMixin, ListAPIView):
|
class AccountHistoriesSecretAPI(ExtraFilterFieldsMixin, RecordViewLogMixin, ListAPIView):
|
||||||
model = Account.history.model
|
model = Account.history.model
|
||||||
serializer_class = serializers.AccountHistorySerializer
|
serializer_class = serializers.AccountHistorySerializer
|
||||||
http_method_names = ['get', 'options']
|
http_method_names = ['get', 'options']
|
||||||
|
@ -123,6 +124,10 @@ class AccountHistoriesSecretAPI(RecordViewLogMixin, ListAPIView):
|
||||||
def get_object(self):
|
def get_object(self):
|
||||||
return get_object_or_404(Account, pk=self.kwargs.get('pk'))
|
return get_object_or_404(Account, pk=self.kwargs.get('pk'))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def filter_spm_queryset(resource_ids, queryset):
|
||||||
|
return queryset.filter(history_id__in=resource_ids)
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
account = self.get_object()
|
account = self.get_object()
|
||||||
histories = account.history.all()
|
histories = account.history.all()
|
||||||
|
|
|
@ -4,7 +4,6 @@ from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('accounts', '0009_account_usernames_to_ids'),
|
('accounts', '0009_account_usernames_to_ids'),
|
||||||
]
|
]
|
||||||
|
@ -15,4 +14,9 @@ class Migration(migrations.Migration):
|
||||||
name='is_sync_account',
|
name='is_sync_account',
|
||||||
field=models.BooleanField(blank=True, default=False, verbose_name='Is sync account'),
|
field=models.BooleanField(blank=True, default=False, verbose_name='Is sync account'),
|
||||||
),
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='account',
|
||||||
|
name='source_id',
|
||||||
|
field=models.CharField(max_length=128, null=True, blank=True, verbose_name='Source ID'),
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
# Generated by Django 3.2.17 on 2023-03-23 07:08
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('accounts', '0010_gatheraccountsautomation_is_sync_account'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='account',
|
|
||||||
name='source_id',
|
|
||||||
field=models.CharField(max_length=128, null=True, blank=True, verbose_name='Source ID'),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -392,6 +392,7 @@ class AccountSecretSerializer(SecretReadableMixin, AccountSerializer):
|
||||||
|
|
||||||
class AccountHistorySerializer(serializers.ModelSerializer):
|
class AccountHistorySerializer(serializers.ModelSerializer):
|
||||||
secret_type = LabeledChoiceField(choices=SecretType.choices, label=_('Secret type'))
|
secret_type = LabeledChoiceField(choices=SecretType.choices, label=_('Secret type'))
|
||||||
|
id = serializers.IntegerField(label=_('ID'), source='history_id', read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Account.history.model
|
model = Account.history.model
|
||||||
|
|
Loading…
Reference in New Issue