refactor: workspace add user member

This commit is contained in:
wxg0103 2025-06-11 11:25:26 +08:00
parent 840fa68b98
commit bec1cbd000
3 changed files with 44 additions and 0 deletions

View File

@ -416,6 +416,34 @@ class UserManageSerializer(serializers.Serializer):
users = User.objects.filter(id__in=user_ids).values('id', 'nick_name')
return list(users)
def get_user_members(self, workspace_id):
"""
获取工作空间成员列表
:param workspace_id: 工作空间ID
:return: 成员列表
"""
role_model = DatabaseModelManage.get_model("role_model")
user_role_relation_model = DatabaseModelManage.get_model("workspace_user_role_mapping")
if user_role_relation_model and role_model:
user_role_relations = (
user_role_relation_model.objects
.filter(workspace_id=workspace_id)
.exclude(role__id='workspace_admin')
.select_related('role', 'user') # 预加载外键数据
.distinct('user_id')
)
return [
{
'id': relation.user.id,
'nick_name': relation.user.nick_name,
'email': relation.user.email,
'role': relation.role.name
}
for relation in user_role_relations
]
return []
class BatchDelete(serializers.Serializer):
ids = serializers.ListField(required=True, label=_('User IDs'))

View File

@ -16,6 +16,8 @@ urlpatterns = [
path("user/current/reset_password", views.ResetCurrentUserPasswordView.as_view(), name="reset_password_current"),
path('workspace/<str:workspace_id>/user_list', views.WorkspaceUserListView.as_view(),
name="test_workspace_id_permission"),
path('workspace/<str:workspace_id>/user_member',views.WorkspaceUserMemberView.as_view(),
name="test_workspace_id_permission"),
path('workspace/<str:workspace_id>/user/profile', views.TestWorkspacePermissionUserView.as_view(),
name="test_workspace_id_permission"),
path("user_manage", views.UserManage.as_view(), name="user_manage"),

View File

@ -110,6 +110,20 @@ class WorkspaceUserListView(APIView):
return result.success(UserManageSerializer().get_user_list(workspace_id))
class WorkspaceUserMemberView(APIView):
authentication_classes = [TokenAuth]
@extend_schema(methods=['GET'],
summary=_("Get user member under workspace"),
description=_("Get user member under workspace"),
operation_id=_("Get user member under workspace"), # type: ignore
tags=[_("User Management")], # type: ignore
parameters=WorkspaceUserAPI.get_parameters(),
responses=WorkspaceUserAPI.get_response())
def get(self, request: Request, workspace_id):
return result.success(UserManageSerializer().get_user_members(workspace_id))
class UserManage(APIView):
authentication_classes = [TokenAuth]