fix: 修复user筛选用户bug

This commit is contained in:
feng626
2021-08-17 18:50:15 +08:00
parent 9a541ebf05
commit 58c058c1a5
4 changed files with 58 additions and 13 deletions

View File

@@ -1,11 +1,15 @@
from django_filters import rest_framework as filters
from django.db.models import Q
from rest_framework.compat import coreapi, coreschema
from rest_framework import filters
from rest_framework.filters import BaseFilterBackend
from common.drf.filters import BaseFilterSet
from users.models.user import User
from users.const import SystemOrOrgRole
from orgs.utils import current_org
class OrgRoleUserFilterBackend(filters.BaseFilterBackend):
class OrgRoleUserFilterBackend(BaseFilterBackend):
def filter_queryset(self, request, queryset, view):
org_role = request.query_params.get('org_role')
if not org_role:
@@ -30,3 +34,30 @@ class OrgRoleUserFilterBackend(filters.BaseFilterBackend):
)
)
]
class UserFilter(BaseFilterSet):
system_or_org_role = filters.ChoiceFilter(choices=SystemOrOrgRole.choices, method='filter_system_or_org_role')
class Meta:
model = User
fields = (
'id', 'username', 'email', 'name', 'source', 'system_or_org_role'
)
def filter_system_or_org_role(self, queryset, name, value):
value = value.split('_')
if len(value) == 1:
role_type, value = None, value[0]
else:
role_type, value = value
value = value.title()
system_queries = Q(role=value)
org_queries = Q(m2m_org_members__role=value, m2m_org_members__org_id=current_org.id)
if not role_type:
queries = system_queries | org_queries
elif role_type == 'system':
queries = system_queries
elif role_type == 'org':
queries = org_queries
return queryset.filter(queries)