mirror of https://github.com/jumpserver/jumpserver
perf(terminal): 优化命令提交
parent
d2c93aff66
commit
78232aa900
|
@ -1,8 +1,10 @@
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from common.drf.serializers import BulkModelSerializer, AdaptedBulkListSerializer
|
from common.drf.serializers import BulkModelSerializer, AdaptedBulkListSerializer
|
||||||
|
from common.utils import is_uuid
|
||||||
from ..models import (
|
from ..models import (
|
||||||
Terminal, Status, Session, Task
|
Terminal, Status, Session, Task, CommandStorage, ReplayStorage
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,6 +20,31 @@ class TerminalSerializer(BulkModelSerializer):
|
||||||
'is_alive', 'date_created', 'command_storage', 'replay_storage'
|
'is_alive', 'date_created', 'command_storage', 'replay_storage'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_kwargs_may_be_uuid(value):
|
||||||
|
kwargs = {}
|
||||||
|
if is_uuid(value):
|
||||||
|
kwargs['id'] = value
|
||||||
|
else:
|
||||||
|
kwargs['name'] = value
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
def validate_command_storage(self, value):
|
||||||
|
kwargs = self.get_kwargs_may_be_uuid(value)
|
||||||
|
storage = CommandStorage.objects.filter(**kwargs).first()
|
||||||
|
if storage:
|
||||||
|
return storage.name
|
||||||
|
else:
|
||||||
|
raise serializers.ValidationError(_('Not found'))
|
||||||
|
|
||||||
|
def validate_replay_storage(self, value):
|
||||||
|
kwargs = self.get_kwargs_may_be_uuid(value)
|
||||||
|
storage = ReplayStorage.objects.filter(**kwargs).first()
|
||||||
|
if storage:
|
||||||
|
return storage.name
|
||||||
|
else:
|
||||||
|
raise serializers.ValidationError(_('Not found'))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_session_online(obj):
|
def get_session_online(obj):
|
||||||
return Session.objects.filter(terminal=obj, is_finished=False).count()
|
return Session.objects.filter(terminal=obj, is_finished=False).count()
|
||||||
|
|
Loading…
Reference in New Issue