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

pull/4886/head
Bai 2020-10-27 17:45:57 +08:00 committed by 老广
parent 038582a8c1
commit 76ca6d587d
2 changed files with 29 additions and 7 deletions

View File

@ -4,7 +4,7 @@
from orgs.mixins.api import OrgBulkModelViewSet from orgs.mixins.api import OrgBulkModelViewSet
from orgs.mixins import generics from orgs.mixins import generics
from ..hands import IsOrgAdmin, IsAppUser from ..hands import IsOrgAdmin, IsAppUser
from ..models import RemoteApp from ..models import RemoteApp, Application
from ..serializers import RemoteAppSerializer, RemoteAppConnectionInfoSerializer from ..serializers import RemoteAppSerializer, RemoteAppConnectionInfoSerializer
@ -22,6 +22,6 @@ class RemoteAppViewSet(OrgBulkModelViewSet):
class RemoteAppConnectionInfoApi(generics.RetrieveAPIView): class RemoteAppConnectionInfoApi(generics.RetrieveAPIView):
model = RemoteApp model = Application
permission_classes = (IsAppUser, ) permission_classes = (IsAppUser, )
serializer_class = RemoteAppConnectionInfoSerializer serializer_class = RemoteAppConnectionInfoSerializer

View File

@ -11,7 +11,7 @@ from orgs.mixins.serializers import BulkOrgResourceModelSerializer
from assets.models import Asset from assets.models import Asset
from .. import const from .. import const
from ..models import RemoteApp from ..models import RemoteApp, Category, Application
class RemmoteAppCategorySerializer(serializers.Serializer): class RemmoteAppCategorySerializer(serializers.Serializer):
@ -108,17 +108,39 @@ class RemoteAppConnectionInfoSerializer(serializers.ModelSerializer):
parameter_remote_app = serializers.SerializerMethodField() parameter_remote_app = serializers.SerializerMethodField()
class Meta: class Meta:
model = RemoteApp model = Application
fields = [ fields = [
'id', 'name', 'asset', 'parameter_remote_app', 'id', 'name', 'parameter_remote_app',
] ]
read_only_fields = ['parameter_remote_app'] read_only_fields = ['parameter_remote_app']
@staticmethod @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 = { parameter = {
'program': const.REMOTE_APP_BOOT_PROGRAM_NAME, 'program': const.REMOTE_APP_BOOT_PROGRAM_NAME,
'working_directory': '', 'working_directory': '',
'parameters': obj.parameters, 'parameters': parameters,
} }
return parameter return parameter