perf: 修复 org role binding 在root组织下看到的可能不对

This commit is contained in:
ibuler
2022-03-16 15:59:52 +08:00
committed by Jiangjie.Bai
parent efb26132f6
commit 7eed7b32cc
4 changed files with 37 additions and 15 deletions

View File

@@ -22,9 +22,10 @@ class RoleBindingViewSet(OrgBulkModelViewSet):
'user__name', 'user__username', 'role__name'
]
def get_queryset(self):
queryset = super().get_queryset() \
.prefetch_related('user', 'role') \
@staticmethod
def annotate_queryset(queryset):
queryset = queryset \
.prefetch_related('user', 'role', 'org') \
.annotate(
user_display=Concat(
F('user__name'), Value('('),
@@ -34,6 +35,11 @@ class RoleBindingViewSet(OrgBulkModelViewSet):
)
return queryset
def get_queryset(self):
queryset = super().get_queryset()
queryset = self.annotate_queryset(queryset)
return queryset
class SystemRoleBindingViewSet(RoleBindingViewSet):
model = SystemRoleBinding
@@ -49,9 +55,13 @@ class SystemRoleBindingViewSet(RoleBindingViewSet):
class OrgRoleBindingViewSet(RoleBindingViewSet):
model = OrgRoleBinding
serializer_class = serializers.OrgRoleBindingSerializer
def get_queryset(self):
queryset = OrgRoleBinding.objects.root_all()
queryset = self.annotate_queryset(queryset)
return queryset
def perform_bulk_create(self, serializer):
validated_data = serializer.validated_data
bindings = [