perf(application): 修改获取远程应用连接参数的API(2)

pull/4886/head
Bai 2020-10-27 18:01:08 +08:00 committed by 老广
parent 76ca6d587d
commit a3507975fb
3 changed files with 20 additions and 4 deletions

View File

@ -3,8 +3,9 @@
from orgs.mixins.api import OrgBulkModelViewSet from orgs.mixins.api import OrgBulkModelViewSet
from orgs.mixins import generics from orgs.mixins import generics
from common.exceptions import JMSException
from ..hands import IsOrgAdmin, IsAppUser from ..hands import IsOrgAdmin, IsAppUser
from ..models import RemoteApp, Application from .. import models
from ..serializers import RemoteAppSerializer, RemoteAppConnectionInfoSerializer from ..serializers import RemoteAppSerializer, RemoteAppConnectionInfoSerializer
@ -14,7 +15,7 @@ __all__ = [
class RemoteAppViewSet(OrgBulkModelViewSet): class RemoteAppViewSet(OrgBulkModelViewSet):
model = RemoteApp model = models.RemoteApp
filter_fields = ('name', 'type', 'comment') filter_fields = ('name', 'type', 'comment')
search_fields = filter_fields search_fields = filter_fields
permission_classes = (IsOrgAdmin,) permission_classes = (IsOrgAdmin,)
@ -22,6 +23,12 @@ class RemoteAppViewSet(OrgBulkModelViewSet):
class RemoteAppConnectionInfoApi(generics.RetrieveAPIView): class RemoteAppConnectionInfoApi(generics.RetrieveAPIView):
model = Application model = models.Application
permission_classes = (IsAppUser, ) permission_classes = (IsAppUser, )
serializer_class = RemoteAppConnectionInfoSerializer serializer_class = RemoteAppConnectionInfoSerializer
def get_object(self):
obj = super().get_object()
if not models.Category.is_remote_app(obj.category):
raise JMSException('The request instance is not of category `remote_app`')
return obj

View File

@ -112,6 +112,10 @@ class Category(ChoiceSet):
mapper = cls.get_category_serializer_mapper() mapper = cls.get_category_serializer_mapper()
return mapper.get(cg, None) return mapper.get(cg, None)
@classmethod
def is_remote_app(cls, cg):
return cg == cls.remote_app
class Application(CommonModelMixin, OrgModelMixin): class Application(CommonModelMixin, OrgModelMixin):
name = models.CharField(max_length=128, verbose_name=_('Name')) name = models.CharField(max_length=128, verbose_name=_('Name'))

View File

@ -106,11 +106,12 @@ class RemoteAppSerializer(BulkOrgResourceModelSerializer):
class RemoteAppConnectionInfoSerializer(serializers.ModelSerializer): class RemoteAppConnectionInfoSerializer(serializers.ModelSerializer):
parameter_remote_app = serializers.SerializerMethodField() parameter_remote_app = serializers.SerializerMethodField()
asset = serializers.SerializerMethodField()
class Meta: class Meta:
model = Application model = Application
fields = [ fields = [
'id', 'name', 'parameter_remote_app', 'id', 'name', 'asset', 'parameter_remote_app',
] ]
read_only_fields = ['parameter_remote_app'] read_only_fields = ['parameter_remote_app']
@ -144,3 +145,7 @@ class RemoteAppConnectionInfoSerializer(serializers.ModelSerializer):
'parameters': parameters, 'parameters': parameters,
} }
return parameter return parameter
@staticmethod
def get_asset(obj):
return obj.attrs.get('asset')