fix: Session 过滤支持 Terminal Name 和 ID 字段

pull/9562/head
Bai 2023-02-15 14:30:57 +08:00 committed by Jiangjie.Bai
parent 757702b99d
commit 9a39aca0f1
4 changed files with 28 additions and 13 deletions

View File

@ -1845,17 +1845,15 @@ msgstr "アクティブ"
#: audits/models.py:110
msgid "Detail"
msgstr ""
msgstr "詳細"
#: audits/models.py:112
#, fuzzy
#| msgid "Terminal ID"
msgid "Detail ID"
msgstr "ターミナル ID"
msgstr "詳細 ID"
#: audits/models.py:116
msgid "Activity log"
msgstr ""
msgstr "活動記録"
#: audits/models.py:128
msgid "Change by"

View File

@ -1833,13 +1833,11 @@ msgstr "激活中"
#: audits/models.py:110
msgid "Detail"
msgstr ""
msgstr "详情"
#: audits/models.py:112
#, fuzzy
#| msgid "Terminal ID"
msgid "Detail ID"
msgstr "终端 ID"
msgstr "详情 ID"
#: audits/models.py:116
msgid "Activity log"

View File

@ -2,24 +2,25 @@
#
import os
import tarfile
from django.core.files.storage import default_storage
from django.db.models import F
from django.http import FileResponse
from django.shortcuts import get_object_or_404, reverse
from django.utils.encoding import escape_uri_path
from django.utils.translation import ugettext as _
from django_filters import rest_framework as filters
from rest_framework import generics
from rest_framework import viewsets, views
from rest_framework.decorators import action
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from common.drf.filters import BaseFilterSet
from common.const.http import GET
from common.drf.filters import DatetimeRangeFilter
from common.drf.renders import PassthroughRenderer
from common.api import AsyncApiMixin
from common.utils import data_to_json
from common.utils import data_to_json, is_uuid
from common.utils import get_logger, get_object_or_none
from orgs.mixins.api import OrgBulkModelViewSet
from orgs.utils import tmp_to_root_org, tmp_to_org
@ -49,6 +50,24 @@ class MySessionAPIView(generics.ListAPIView):
return qs
class SessionFilterSet(BaseFilterSet):
terminal = filters.CharFilter(method='filter_terminal')
class Meta:
model = Session
fields = [
"user", "asset", "account", "remote_addr",
"protocol", "is_finished", 'login_from', 'terminal'
]
@staticmethod
def filter_terminal(queryset, name, value):
if is_uuid(value):
return queryset.filter(terminal__id=value)
else:
return queryset.filter(terminal__name=value)
class SessionViewSet(OrgBulkModelViewSet):
model = Session
serializer_classes = {
@ -59,7 +78,7 @@ class SessionViewSet(OrgBulkModelViewSet):
"user", "asset", "account", "remote_addr",
"protocol", "is_finished", 'login_from',
]
filterset_fields = search_fields + ['terminal']
filterset_class = SessionFilterSet
date_range_filter_fields = [
('date_start', ('date_from', 'date_to'))
]

View File

@ -49,7 +49,7 @@ class SessionSerializer(BulkOrgResourceModelSerializer):
'is_success': {'label': _('Is success')},
'can_replay': {'label': _('Can replay')},
'can_join': {'label': _('Can join')},
'terminal': {'label': _('Terminal ID')},
'terminal': {'label': _('Terminal')},
'is_finished': {'label': _('Is finished')},
'can_terminate': {'label': _('Can terminate')},
'terminal_display': {'label': _('Terminal display')},