From 76ca6d587ddca32978b3d736b0547d0978dee043 Mon Sep 17 00:00:00 2001 From: Bai <bugatti_it@163.com> Date: Tue, 27 Oct 2020 17:45:57 +0800 Subject: [PATCH] =?UTF-8?q?perf(application):=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=BF=9C=E7=A8=8B=E5=BA=94=E7=94=A8=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E5=8F=82=E6=95=B0=E7=9A=84API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/applications/api/remote_app.py | 4 +-- apps/applications/serializers/remote_app.py | 32 +++++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/apps/applications/api/remote_app.py b/apps/applications/api/remote_app.py index 4bd9109fb..25b912398 100644 --- a/apps/applications/api/remote_app.py +++ b/apps/applications/api/remote_app.py @@ -4,7 +4,7 @@ from orgs.mixins.api import OrgBulkModelViewSet from orgs.mixins import generics from ..hands import IsOrgAdmin, IsAppUser -from ..models import RemoteApp +from ..models import RemoteApp, Application from ..serializers import RemoteAppSerializer, RemoteAppConnectionInfoSerializer @@ -22,6 +22,6 @@ class RemoteAppViewSet(OrgBulkModelViewSet): class RemoteAppConnectionInfoApi(generics.RetrieveAPIView): - model = RemoteApp + model = Application permission_classes = (IsAppUser, ) serializer_class = RemoteAppConnectionInfoSerializer diff --git a/apps/applications/serializers/remote_app.py b/apps/applications/serializers/remote_app.py index 20eb3402a..81f36b3d3 100644 --- a/apps/applications/serializers/remote_app.py +++ b/apps/applications/serializers/remote_app.py @@ -11,7 +11,7 @@ from orgs.mixins.serializers import BulkOrgResourceModelSerializer from assets.models import Asset from .. import const -from ..models import RemoteApp +from ..models import RemoteApp, Category, Application class RemmoteAppCategorySerializer(serializers.Serializer): @@ -108,17 +108,39 @@ class RemoteAppConnectionInfoSerializer(serializers.ModelSerializer): parameter_remote_app = serializers.SerializerMethodField() class Meta: - model = RemoteApp + model = Application fields = [ - 'id', 'name', 'asset', 'parameter_remote_app', + 'id', 'name', 'parameter_remote_app', ] read_only_fields = ['parameter_remote_app'] @staticmethod - def get_parameter_remote_app(obj): + def get_parameters(obj): + """ + 返回Guacamole需要的RemoteApp配置参数信息中的parameters参数 + """ + serializer_cls = Category.get_type_serializer_cls(obj.type) + fields = serializer_cls().get_fields() + fields.pop('asset', None) + fields_name = list(fields.keys()) + attrs = obj.attrs + _parameters = list() + _parameters.append(obj.type) + for field_name in list(fields_name): + value = attrs.get(field_name, None) + if not value: + continue + if field_name == 'path': + value = '\"%s\"' % value + _parameters.append(str(value)) + _parameters = ' '.join(_parameters) + return _parameters + + def get_parameter_remote_app(self, obj): + parameters = self.get_parameters(obj) parameter = { 'program': const.REMOTE_APP_BOOT_PROGRAM_NAME, 'working_directory': '', - 'parameters': obj.parameters, + 'parameters': parameters, } return parameter