Unverified Commit 47f2df0a authored by Jiangjie.Bai's avatar Jiangjie.Bai Committed by GitHub
Browse files

Merge pull request #4665 from jumpserver/dev

fix(command): 修复命令导出选中项问题
parents b1c530bb e4aafc23
Showing with 19 additions and 7 deletions
+19 -7
......@@ -98,11 +98,7 @@ class IDSpmFilter(filters.BaseFilterBackend):
resources_id = cache.get(cache_key)
if resources_id is None or not isinstance(resources_id, list):
return queryset
if isinstance(queryset, list):
# CommandViewSet
queryset = [q for q in queryset if q['id'] in resources_id]
else:
queryset = queryset.filter(id__in=resources_id)
queryset = queryset.filter(id__in=resources_id)
return queryset
......
......@@ -3,6 +3,7 @@
import time
from django.utils import timezone
from django.shortcuts import HttpResponse
from django.core.cache import cache
from rest_framework import viewsets
from rest_framework import generics
from rest_framework.fields import DateTimeField
......@@ -13,7 +14,7 @@ from django.template import loader
from orgs.utils import current_org
from common.permissions import IsOrgAdminOrAppUser, IsOrgAuditor
from common.utils import get_logger
from common.mixins import ExtraFilterFieldsMixin
from common import const
from ..backends import (
get_command_storage, get_multi_command_storage,
SessionCommandSerializer,
......@@ -63,8 +64,23 @@ class CommandQueryMixin:
)
return queryset
def filter_queryset_spm(self, queryset):
spm = self.request.query_params.get('spm')
if not spm:
return queryset
cache_key = const.KEY_CACHE_RESOURCES_ID.format(spm)
resources_id = cache.get(cache_key)
if resources_id is None or not isinstance(resources_id, list):
return queryset
if isinstance(queryset, list):
queryset = [q for q in queryset if q['id'] in resources_id]
else:
queryset = queryset.filter(id__in=resources_id)
return queryset
def filter_queryset(self, queryset):
# 解决es存储命令时,父类根据filter_fields过滤出现异常的问题,返回的queryset类型list
queryset = self.filter_queryset_spm(queryset)
return queryset
def get_date_range(self):
......@@ -87,7 +103,7 @@ class CommandQueryMixin:
return date_from_st, date_to_st
class CommandViewSet(ExtraFilterFieldsMixin, CommandQueryMixin, viewsets.ModelViewSet):
class CommandViewSet(CommandQueryMixin, viewsets.ModelViewSet):
"""接受app发送来的command log, 格式如下
{
"user": "admin",
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment