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