diff --git a/apps/assets/api/__init__.py b/apps/assets/api/__init__.py index 186ab10b7..8ae0cd9bd 100644 --- a/apps/assets/api/__init__.py +++ b/apps/assets/api/__init__.py @@ -6,4 +6,5 @@ from .label import * from .mixin import * from .node import * from .platform import * +from .protocol import * from .tree import * diff --git a/apps/assets/api/category.py b/apps/assets/api/category.py index b7317e231..242840716 100644 --- a/apps/assets/api/category.py +++ b/apps/assets/api/category.py @@ -2,8 +2,8 @@ from rest_framework.decorators import action from rest_framework.mixins import ListModelMixin from rest_framework.response import Response -from assets.const import AllTypes, Protocol -from assets.serializers import CategorySerializer, TypeSerializer, ProtocolSerializer +from assets.const import AllTypes +from assets.serializers import CategorySerializer, TypeSerializer from common.api import JMSGenericViewSet from common.permissions import IsValidUser @@ -14,7 +14,6 @@ class CategoryViewSet(ListModelMixin, JMSGenericViewSet): serializer_classes = { 'default': CategorySerializer, 'types': TypeSerializer, - 'protocols': ProtocolSerializer, } permission_classes = (IsValidUser,) @@ -33,8 +32,3 @@ class CategoryViewSet(ListModelMixin, JMSGenericViewSet): tp = request.query_params.get('type') constraints = AllTypes.get_constraints(category, tp) return Response(constraints) - - @action(methods=['get'], detail=False) - def protocols(self, request, *args, **kwargs): - protocols = list(Protocol.protocols()) - return self.get_paginated_response_from_queryset(protocols) diff --git a/apps/assets/api/protocol.py b/apps/assets/api/protocol.py new file mode 100644 index 000000000..ea440791d --- /dev/null +++ b/apps/assets/api/protocol.py @@ -0,0 +1,15 @@ +from rest_framework.generics import ListAPIView + +from assets import serializers +from assets.const import Protocol +from common.permissions import IsValidUser + +__all__ = ['ProtocolListApi'] + + +class ProtocolListApi(ListAPIView): + serializer_class = serializers.ProtocolSerializer + permission_classes = (IsValidUser,) + + def get_queryset(self): + return list(Protocol.protocols()) diff --git a/apps/assets/serializers/cagegory.py b/apps/assets/serializers/cagegory.py index dc46f4964..df6264ee1 100644 --- a/apps/assets/serializers/cagegory.py +++ b/apps/assets/serializers/cagegory.py @@ -22,4 +22,3 @@ class CategorySerializer(serializers.Serializer): class ProtocolSerializer(serializers.Serializer): label = serializers.CharField(max_length=64, required=False, allow_blank=True, label=_('Label')) value = serializers.CharField(max_length=64, required=False, allow_blank=True, label=_('Value')) - category = serializers.CharField(max_length=64, required=False, allow_blank=True, label=_('Category')) diff --git a/apps/assets/urls/api_urls.py b/apps/assets/urls/api_urls.py index 983e077f0..5644d7dc0 100644 --- a/apps/assets/urls/api_urls.py +++ b/apps/assets/urls/api_urls.py @@ -26,6 +26,7 @@ router.register(r'protocol-settings', api.PlatformProtocolViewSet, 'protocol-set urlpatterns = [ # path('assets//gateways/', api.AssetGatewayListApi.as_view(), name='asset-gateway-list'), + path('protocols/', api.ProtocolListApi.as_view(), name='asset-protocol'), path('assets//tasks/', api.AssetTaskCreateApi.as_view(), name='asset-task-create'), path('assets/tasks/', api.AssetsTaskCreateApi.as_view(), name='assets-task-create'), path('assets//perm-users/', api.AssetPermUserListApi.as_view(), name='asset-perm-user-list'), diff --git a/apps/perms/serializers/user_permission.py b/apps/perms/serializers/user_permission.py index 96853cff7..9f7f89cee 100644 --- a/apps/perms/serializers/user_permission.py +++ b/apps/perms/serializers/user_permission.py @@ -70,6 +70,7 @@ class AccountsPermedSerializer(serializers.ModelSerializer): class AssetPermedDetailSerializer(AssetPermedSerializer): + # 前面特意加了 permed,避免返回的是资产本身的 permed_protocols = AssetProtocolsPermsSerializer(many=True, required=False, label=_('Protocols')) permed_accounts = AccountsPermedSerializer(label=_("Accounts"), required=False, many=True)