mirror of https://github.com/jumpserver/jumpserver
perf(application): 修改获取远程应用连接参数的API
parent
038582a8c1
commit
76ca6d587d
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue