mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-06 09:51:00 +00:00
fix: 修复角色过滤失败
This commit is contained in:
25
apps/rbac/filters.py
Normal file
25
apps/rbac/filters.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from django_filters import rest_framework as filters
|
||||
|
||||
from common.drf.filters import BaseFilterSet
|
||||
from rbac.models import Role
|
||||
|
||||
|
||||
class RoleFilter(BaseFilterSet):
|
||||
name = filters.CharFilter(method='filter_name')
|
||||
|
||||
class Meta:
|
||||
model = Role
|
||||
fields = ('name', 'scope', 'builtin')
|
||||
|
||||
@staticmethod
|
||||
def filter_name(queryset, name, value):
|
||||
builtin_ids = []
|
||||
for role in queryset.filter(builtin=True):
|
||||
if value in role.display_name:
|
||||
builtin_ids.append(role.id)
|
||||
if builtin_ids:
|
||||
builtin_qs = queryset.model.objects.filter(id__in=builtin_ids)
|
||||
else:
|
||||
builtin_qs = queryset.model.objects.none()
|
||||
queryset = queryset.filter(name__icontains=value)
|
||||
return queryset | builtin_qs
|
Reference in New Issue
Block a user