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 import generics
from common.exceptions import JMSException
from ..hands import IsOrgAdmin, IsAppUser
from ..models import RemoteApp, Application
from .. import models
from ..serializers import RemoteAppSerializer, RemoteAppConnectionInfoSerializer
@ -14,7 +15,7 @@ __all__ = [
class RemoteAppViewSet(OrgBulkModelViewSet):
model = RemoteApp
model = models.RemoteApp
filter_fields = ('name', 'type', 'comment')
search_fields = filter_fields
permission_classes = (IsOrgAdmin,)
@ -22,6 +23,12 @@ class RemoteAppViewSet(OrgBulkModelViewSet):
class RemoteAppConnectionInfoApi(generics.RetrieveAPIView):
model = Application
model = models.Application
permission_classes = (IsAppUser, )
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()
return mapper.get(cg, None)
@classmethod
def is_remote_app(cls, cg):
return cg == cls.remote_app
class Application(CommonModelMixin, OrgModelMixin):
name = models.CharField(max_length=128, verbose_name=_('Name'))

View File

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