mirror of https://github.com/jumpserver/jumpserver
41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
# coding: utf-8
|
|
#
|
|
|
|
from orgs.mixins.api import OrgBulkModelViewSet
|
|
from orgs.mixins import generics
|
|
from common.exceptions import JMSException
|
|
from ..hands import IsOrgAdmin, IsAppUser
|
|
from .. import models
|
|
from ..serializers import RemoteAppSerializer, RemoteAppConnectionInfoSerializer
|
|
|
|
|
|
__all__ = [
|
|
'RemoteAppViewSet', 'RemoteAppConnectionInfoApi',
|
|
]
|
|
|
|
|
|
class RemoteAppViewSet(OrgBulkModelViewSet):
|
|
model = models.RemoteApp
|
|
filter_fields = ('name', 'type', 'comment')
|
|
search_fields = filter_fields
|
|
permission_classes = (IsOrgAdmin,)
|
|
serializer_class = RemoteAppSerializer
|
|
|
|
|
|
class RemoteAppConnectionInfoApi(generics.RetrieveAPIView):
|
|
model = models.Application
|
|
permission_classes = (IsAppUser, )
|
|
serializer_class = RemoteAppConnectionInfoSerializer
|
|
|
|
@staticmethod
|
|
def check_category_allowed(obj):
|
|
if not obj.category_is_remote_app:
|
|
raise JMSException(
|
|
'The request instance(`{}`) is not of category `remote_app`'.format(obj.category)
|
|
)
|
|
|
|
def get_object(self):
|
|
obj = super().get_object()
|
|
self.check_category_allowed(obj)
|
|
return obj
|