diff --git a/apps/assets/api.py b/apps/assets/api.py index e3570e0f1..1b746da46 100644 --- a/apps/assets/api.py +++ b/apps/assets/api.py @@ -17,6 +17,7 @@ class AssetViewSet(viewsets.ModelViewSet): """API endpoint that allows Asset to be viewed or edited.""" queryset = Asset.objects.all() serializer_class = serializers.AssetSerializer + filter_fields = ('id', 'ip', 'hostname') def get_queryset(self): queryset = super(AssetViewSet, self).get_queryset() @@ -27,7 +28,6 @@ class AssetViewSet(viewsets.ModelViewSet): if asset_group_id: queryset = queryset.filter(groups__id=asset_group_id) - return queryset diff --git a/apps/jumpserver/settings.py b/apps/jumpserver/settings.py index dbb07a94b..e9e73b15c 100644 --- a/apps/jumpserver/settings.py +++ b/apps/jumpserver/settings.py @@ -272,7 +272,7 @@ REST_FRAMEWORK = { 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.SessionAuthentication', ), - 'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',), + 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',), } # Custom User Auth model diff --git a/apps/static/js/jumpserver.js b/apps/static/js/jumpserver.js index 5593fec2a..126de0bbe 100644 --- a/apps/static/js/jumpserver.js +++ b/apps/static/js/jumpserver.js @@ -214,9 +214,7 @@ function APIUpdateAttr(props) { // Sweet Alert for Delete function objectDelete(obj, name, url) { - var $this = $(this); function doDelete() { - var uid = $this.data('uid'); var body = {}; var success = function() { swal('Deleted!', "[ "+name+"]"+" has been deleted ", "success"); diff --git a/apps/users/api.py b/apps/users/api.py index 4d1619af6..46ebfbea1 100644 --- a/apps/users/api.py +++ b/apps/users/api.py @@ -2,8 +2,8 @@ # import base64 +import json -from rest_framework import filters from django.shortcuts import get_object_or_404 from django.core.cache import cache from django.conf import settings @@ -12,6 +12,7 @@ from rest_framework.response import Response from rest_framework.views import APIView from rest_framework_bulk import ListBulkCreateUpdateDestroyAPIView, BulkModelViewSet from rest_framework import authentication +import django_filters from django_filters.rest_framework import DjangoFilterBackend from common.mixins import BulkDeleteApiMixin @@ -26,12 +27,28 @@ from . import serializers logger = get_logger(__name__) +class IDInFilter(django_filters.rest_framework.FilterSet): + id__in = django_filters.CharFilter(method='in_filter') + + class Meta: + model = User + fields = ['id__in'] + + def in_filter(self, queryset, name, value): + try: + value = json.loads(value) + except ValueError: + value = [] + return queryset.filter(**{name+'__in': value}) + + class UserViewSet(BulkModelViewSet): queryset = User.objects.all() serializer_class = serializers.UserSerializer permission_classes = (IsSuperUser,) filter_backends = (DjangoFilterBackend,) - # filter_fields = ('username', 'email', 'name', 'id') + filter_fields = ('username', 'email', 'name', 'id') + filter_class = IDInFilter ordering_fields = ('username', 'email') diff --git a/apps/users/templates/users/user_list.html b/apps/users/templates/users/user_list.html index cf0d4190b..c6ad18efd 100644 --- a/apps/users/templates/users/user_list.html +++ b/apps/users/templates/users/user_list.html @@ -39,6 +39,7 @@ +