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 #: audits/models.py:110
msgid "Detail" msgid "Detail"
msgstr "" msgstr "詳細"
#: audits/models.py:112 #: audits/models.py:112
#, fuzzy
#| msgid "Terminal ID"
msgid "Detail ID" msgid "Detail ID"
msgstr "ターミナル ID" msgstr "詳細 ID"
#: audits/models.py:116 #: audits/models.py:116
msgid "Activity log" msgid "Activity log"
msgstr "" msgstr "活動記録"
#: audits/models.py:128 #: audits/models.py:128
msgid "Change by" msgid "Change by"

View File

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

View File

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

View File

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