mirror of https://github.com/jumpserver/jumpserver
fix: 修复终端列表搜索问题
parent
958122847b
commit
2adfbeaeb7
|
@ -1,13 +1,15 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
import logging
|
import logging
|
||||||
|
from django.db.models import Q
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from rest_framework import generics
|
from rest_framework import generics
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.views import APIView, Response
|
from rest_framework.views import APIView, Response
|
||||||
|
from django_filters import rest_framework as filters
|
||||||
|
|
||||||
|
from common.drf.filters import BaseFilterSet
|
||||||
from common.api import JMSBulkModelViewSet
|
from common.api import JMSBulkModelViewSet
|
||||||
from common.exceptions import JMSException
|
from common.exceptions import JMSException
|
||||||
from common.permissions import WithBootstrapToken
|
from common.permissions import WithBootstrapToken
|
||||||
|
@ -21,10 +23,28 @@ __all__ = [
|
||||||
logger = logging.getLogger(__file__)
|
logger = logging.getLogger(__file__)
|
||||||
|
|
||||||
|
|
||||||
|
class TerminalFilterSet(BaseFilterSet):
|
||||||
|
name = filters.CharFilter(field_name='name', lookup_expr='icontains')
|
||||||
|
remote_addr = filters.CharFilter(field_name='remote_addr', lookup_expr='icontains')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Terminal
|
||||||
|
fields = ['name', 'remote_addr', 'type']
|
||||||
|
|
||||||
|
def filter_queryset(self, queryset):
|
||||||
|
queryset = super().filter_queryset(queryset)
|
||||||
|
search = self.request.query_params.get('search')
|
||||||
|
if not search:
|
||||||
|
return queryset
|
||||||
|
q = Q(name__icontains=search) | Q(remote_addr__icontains=search)
|
||||||
|
queryset = queryset.filter(q)
|
||||||
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
class TerminalViewSet(JMSBulkModelViewSet):
|
class TerminalViewSet(JMSBulkModelViewSet):
|
||||||
queryset = Terminal.objects.filter(is_deleted=False)
|
queryset = Terminal.objects.filter(is_deleted=False)
|
||||||
serializer_class = serializers.TerminalSerializer
|
serializer_class = serializers.TerminalSerializer
|
||||||
filterset_fields = ['name', 'remote_addr', 'type']
|
filterset_class = TerminalFilterSet
|
||||||
custom_filter_fields = ['load']
|
custom_filter_fields = ['load']
|
||||||
|
|
||||||
def destroy(self, request, *args, **kwargs):
|
def destroy(self, request, *args, **kwargs):
|
||||||
|
|
Loading…
Reference in New Issue