diff --git a/apps/assets/api/account/account.py b/apps/assets/api/account/account.py index 83bbc4d13..eaba34571 100644 --- a/apps/assets/api/account/account.py +++ b/apps/assets/api/account/account.py @@ -34,11 +34,6 @@ class AccountViewSet(OrgBulkModelViewSet): account = super().get_object() task = test_accounts_connectivity_manual.delay([account.id]) return Response(data={'task': task.id}) - # - # @action(methods=['get'], detail=True, url_path='secret') - # def get_secret(self, request, *args, **kwargs): - # account = super().get_object() - # return Response(data={'secret': account.secret}) class AccountSecretsViewSet(RecordViewLogMixin, AccountViewSet): @@ -49,6 +44,7 @@ class AccountSecretsViewSet(RecordViewLogMixin, AccountViewSet): 'default': serializers.AccountSecretSerializer } http_method_names = ['get'] + # Todo: 记得打开 # permission_classes = [RBACPermission, UserConfirmation.require(ConfirmType.MFA)] rbac_perms = { 'list': 'assets.view_assetaccountsecret', diff --git a/apps/assets/filters.py b/apps/assets/filters.py index db29f4393..2af062718 100644 --- a/apps/assets/filters.py +++ b/apps/assets/filters.py @@ -163,7 +163,7 @@ class AccountFilterSet(BaseFilterSet): username = drf_filters.CharFilter(field_name="username", lookup_expr='exact') address = drf_filters.CharFilter(field_name="asset__address", lookup_expr='exact') asset = drf_filters.CharFilter(field_name="asset_id", lookup_expr='exact') - assets = drf_filters.CharFilter(field_name='asset_id', lookup_expr='in') + assets = drf_filters.CharFilter(field_name='asset_id', lookup_expr='exact') nodes = drf_filters.CharFilter(method='filter_nodes') has_secret = drf_filters.BooleanFilter(method='filter_has_secret') @@ -177,7 +177,7 @@ class AccountFilterSet(BaseFilterSet): @staticmethod def filter_nodes(queryset, name, value): - nodes = Node.objects.filter(id__in=value) + nodes = Node.objects.filter(id=value) if not nodes: return queryset diff --git a/apps/assets/serializers/asset/common.py b/apps/assets/serializers/asset/common.py index 45b02f8ac..059b7ffe3 100644 --- a/apps/assets/serializers/asset/common.py +++ b/apps/assets/serializers/asset/common.py @@ -6,8 +6,9 @@ from django.utils.translation import ugettext_lazy as _ from django.db.transaction import atomic from django.db.models import F -from common.drf.serializers import JMSWritableNestedModelSerializer +from common.drf.serializers import WritableNestedModelSerializer from common.drf.fields import LabeledChoiceField, ObjectRelatedField +from orgs.mixins.serializers import OrgResourceSerializerMixin from ..account import AccountSerializer from ...models import Asset, Node, Platform, Label, Domain, Account, Protocol from ...const import Category, AllTypes @@ -57,7 +58,7 @@ class AssetAccountSerializer(AccountSerializer): fields = fields_mini + fields_write_only -class AssetSerializer(JMSWritableNestedModelSerializer): +class AssetSerializer(OrgResourceSerializerMixin, WritableNestedModelSerializer): category = LabeledChoiceField(choices=Category.choices, read_only=True, label=_('Category')) type = LabeledChoiceField(choices=AllTypes.choices(), read_only=True, label=_('Type')) domain = ObjectRelatedField(required=False, queryset=Domain.objects, label=_('Domain'), allow_null=True) diff --git a/apps/assets/serializers/platform.py b/apps/assets/serializers/platform.py index 06b70be05..cb3ade099 100644 --- a/apps/assets/serializers/platform.py +++ b/apps/assets/serializers/platform.py @@ -2,7 +2,7 @@ from rest_framework import serializers from django.utils.translation import gettext_lazy as _ from common.drf.fields import LabeledChoiceField -from common.drf.serializers import JMSWritableNestedModelSerializer +from common.drf.serializers import WritableNestedModelSerializer from ..models import Platform, PlatformProtocol, PlatformAutomation from ..const import Category, AllTypes @@ -71,7 +71,7 @@ class PlatformProtocolsSerializer(serializers.ModelSerializer): ] -class PlatformSerializer(JMSWritableNestedModelSerializer): +class PlatformSerializer(WritableNestedModelSerializer): type = LabeledChoiceField(choices=AllTypes.choices(), label=_("Type")) category = LabeledChoiceField(choices=Category.choices, label=_("Category")) protocols = PlatformProtocolsSerializer(label=_('Protocols'), many=True, required=False) diff --git a/apps/common/drf/serializers/common.py b/apps/common/drf/serializers/common.py index cfd81d476..688e1bfcc 100644 --- a/apps/common/drf/serializers/common.py +++ b/apps/common/drf/serializers/common.py @@ -5,7 +5,7 @@ from rest_framework.serializers import ModelSerializer from rest_framework_bulk.serializers import BulkListSerializer from django.utils.translation import gettext_lazy as _ from django.utils.functional import cached_property -from drf_writable_nested.serializers import WritableNestedModelSerializer +from drf_writable_nested.serializers import WritableNestedModelSerializer as NestedModelSerializer from .mixin import BulkListSerializerMixin, BulkSerializerMixin @@ -13,7 +13,7 @@ from .mixin import BulkListSerializerMixin, BulkSerializerMixin __all__ = [ 'MethodSerializer', 'EmptySerializer', 'BulkModelSerializer', 'AdaptedBulkListSerializer', 'CeleryTaskSerializer', - 'JMSWritableNestedModelSerializer', + 'WritableNestedModelSerializer', 'GroupedChoiceSerializer', ] @@ -86,5 +86,5 @@ class GroupedChoiceSerializer(ChoiceSerializer): children = ChoiceSerializer(many=True, label=_("Children")) -class JMSWritableNestedModelSerializer(ModelSerializer): +class WritableNestedModelSerializer(NestedModelSerializer): pass