perf: applet host tips

pull/14079/head^2
ibuler 2024-09-03 18:16:50 +08:00 committed by 老广
parent 7973239424
commit cf1dc79c68
4 changed files with 24 additions and 12 deletions

View File

@ -9,9 +9,9 @@ from rest_framework.decorators import action
from rest_framework.request import Request
from rest_framework.response import Response
from common.api.mixin import CommonApiMixin
from common.const.http import GET
from common.drf.filters import BaseFilterSet
from common.api.mixin import CommonApiMixin
from terminal import const
from terminal.filters import CommandStorageFilter, CommandFilter, CommandFilterForStorageTree
from terminal.models import CommandStorage, ReplayStorage
@ -30,8 +30,10 @@ class BaseStorageViewSetMixin(CommonApiMixin):
if instance.type_null_or_server or instance.is_default:
data = {'msg': _('Deleting the default storage is not allowed')}
return Response(data=data, status=status.HTTP_400_BAD_REQUEST)
if instance.is_use():
data = {'msg': _('Cannot delete storage that is being used')}
used_by = instance.used_by()
if used_by:
names = ', '.join(list(used_by.values_list('name', flat=True)))
data = {'msg': _('Cannot delete storage that is being used: {}').format(names)}
return Response(data=data, status=status.HTTP_400_BAD_REQUEST)
return super().destroy(request, *args, **kwargs)

View File

@ -105,10 +105,10 @@ class CommandStorage(CommonStorageModelMixin, JMSBaseModel):
store = engine_mod.CommandStore(self.config)
return store.ping(timeout=3)
def is_use(self):
def used_by(self):
return Terminal.objects.filter(
command_storage=self.name, is_deleted=False
).exists()
)
def get_command_queryset(self):
if self.type_null:

View File

@ -158,7 +158,6 @@ class Terminal(StorageMixin, TerminalStatusMixin, JMSBaseModel):
self.user = None
self.is_deleted = True
self.save()
return
def __str__(self):
status = "Active"

View File

@ -18,11 +18,13 @@ __all__ = [
'AppletHostStartupSerializer', 'AppletSetupSerializer'
]
RDS_LICENSE_DOC_URL = 'https://learn.microsoft.com/en-us/windows-server/remote/remote-desktop-services/rds-client-access-license'
class DeployOptionsSerializer(serializers.Serializer):
LICENSE_MODE_CHOICES = (
(4, _('Per Session')),
(2, _('Per Device')),
(2, _('Per Device (Device number limit)')),
(4, _('Per User (User number limit)')),
)
# 单用户单会话,
@ -44,11 +46,20 @@ class DeployOptionsSerializer(serializers.Serializer):
""")
)
IGNORE_VERIFY_CERTS = serializers.BooleanField(default=True, label=_("Ignore Certificate Verification"))
RDS_Licensing = serializers.BooleanField(default=False, label=_("Existing RDS license"))
RDS_Licensing = serializers.BooleanField(
default=False, label=_("Existing RDS license"),
help_text=_('If not exist, the RDS will be in trial mode, and the trial period is 120 days. '
'<a href={}>Detail</a>').format(RDS_LICENSE_DOC_URL)
)
RDS_LicenseServer = serializers.CharField(default='127.0.0.1', label=_('RDS License Server'), max_length=1024)
RDS_LicensingMode = serializers.ChoiceField(choices=LICENSE_MODE_CHOICES, default=2, label=_('RDS Licensing Mode'))
RDS_fSingleSessionPerUser = serializers.ChoiceField(choices=SESSION_PER_USER, default=1,
label=_("RDS Single Session Per User"))
RDS_LicensingMode = serializers.ChoiceField(
choices=LICENSE_MODE_CHOICES, default=2, label=_('RDS Licensing Mode'),
)
RDS_fSingleSessionPerUser = serializers.ChoiceField(
choices=SESSION_PER_USER, default=1, label=_("RDS Single Session Per User"),
help_text=_('Tips: A RDS user can have only one session at a time. If set, when next login connected, '
'previous session will be disconnected.')
)
RDS_MaxDisconnectionTime = serializers.IntegerField(
default=60000, label=_("RDS Max Disconnection Time (ms)"),
help_text=_(