mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-24 04:50:30 +00:00
fix: Session 过滤支持 Terminal Name 和 ID 字段
This commit is contained in:
@@ -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'))
|
||||
]
|
||||
|
Reference in New Issue
Block a user