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

This commit is contained in:
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

@@ -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'))
]