diff --git a/apps/common/utils/crypto.py b/apps/common/utils/crypto.py index f6a690a82..331f8b0bb 100644 --- a/apps/common/utils/crypto.py +++ b/apps/common/utils/crypto.py @@ -260,7 +260,7 @@ def decrypt_password(value): try: password = aes.decrypt(password_cipher) except UnicodeDecodeError as e: - logging.error("Decript password error: {}, {}".format(password_cipher, e)) + logging.error("Decrypt password error: {}, {}".format(password_cipher, e)) return value return password diff --git a/apps/jumpserver/settings/base.py b/apps/jumpserver/settings/base.py index c66a47d98..e34433391 100644 --- a/apps/jumpserver/settings/base.py +++ b/apps/jumpserver/settings/base.py @@ -306,6 +306,8 @@ FORCE_SCRIPT_NAME = CONFIG.FORCE_SCRIPT_NAME SESSION_COOKIE_SECURE = CONFIG.SESSION_COOKIE_SECURE CSRF_COOKIE_SECURE = CONFIG.CSRF_COOKIE_SECURE +DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' + # For Debug toolbar INTERNAL_IPS = ["127.0.0.1"] if DEBUG_DEV: diff --git a/apps/terminal/api/session.py b/apps/terminal/api/session.py index 6ba0477b9..e99999ab4 100644 --- a/apps/terminal/api/session.py +++ b/apps/terminal/api/session.py @@ -3,6 +3,7 @@ import os import tarfile +from django.db.models import F from django.shortcuts import get_object_or_404, reverse from django.utils.translation import ugettext as _ from django.utils.encoding import escape_uri_path @@ -106,6 +107,11 @@ class SessionViewSet(OrgBulkModelViewSet): response["Content-Disposition"] = disposition return response + def get_queryset(self): + queryset = super().get_queryset().prefetch_related('terminal')\ + .annotate(terminal_display=F('terminal__name')) + return queryset + def filter_queryset(self, queryset): queryset = super().filter_queryset(queryset) # 解决guacamole更新session时并发导致幽灵会话的问题,暂不处理 diff --git a/apps/terminal/serializers/session.py b/apps/terminal/serializers/session.py index 18ef15e68..49d7f7270 100644 --- a/apps/terminal/serializers/session.py +++ b/apps/terminal/serializers/session.py @@ -12,6 +12,7 @@ __all__ = [ class SessionSerializer(BulkOrgResourceModelSerializer): org_id = serializers.CharField(allow_blank=True) + terminal_display = serializers.CharField(read_only=True, label=_('Terminal display')) class Meta: model = Session @@ -23,8 +24,8 @@ class SessionSerializer(BulkOrgResourceModelSerializer): "is_success", "is_finished", "has_replay", "date_start", "date_end", ] - fields_fk = ["terminal",] - fields_custom = ["can_replay", "can_join", "can_terminate",] + fields_fk = ["terminal", ] + fields_custom = ["can_replay", "can_join", "can_terminate", 'terminal_display'] fields = fields_small + fields_fk + fields_custom extra_kwargs = { "protocol": {'label': _('Protocol')}, @@ -38,6 +39,7 @@ class SessionSerializer(BulkOrgResourceModelSerializer): 'terminal': {'label': _('Terminal')}, 'is_finished': {'label': _('Is finished')}, 'can_terminate': {'label': _('Can terminate')}, + 'terminal_display': {'label': _('Terminal display')}, } @@ -45,7 +47,7 @@ class SessionDisplaySerializer(SessionSerializer): command_amount = serializers.IntegerField(read_only=True, label=_('Command amount')) class Meta(SessionSerializer.Meta): - fields = SessionSerializer.Meta.fields + ['command_amount'] + fields = SessionSerializer.Meta.fields + ['command_amount', ] class ReplaySerializer(serializers.Serializer):