Skip to content

Commit bec1cbd

Browse files
committed
refactor: workspace add user member
1 parent 840fa68 commit bec1cbd

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

apps/users/serializers/user.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,34 @@ def get_user_list(self, workspace_id):
416416
users = User.objects.filter(id__in=user_ids).values('id', 'nick_name')
417417
return list(users)
418418

419+
def get_user_members(self, workspace_id):
420+
"""
421+
获取工作空间成员列表
422+
:param workspace_id: 工作空间ID
423+
:return: 成员列表
424+
"""
425+
role_model = DatabaseModelManage.get_model("role_model")
426+
user_role_relation_model = DatabaseModelManage.get_model("workspace_user_role_mapping")
427+
428+
if user_role_relation_model and role_model:
429+
user_role_relations = (
430+
user_role_relation_model.objects
431+
.filter(workspace_id=workspace_id)
432+
.exclude(role__id='workspace_admin')
433+
.select_related('role', 'user') # 预加载外键数据
434+
.distinct('user_id')
435+
)
436+
return [
437+
{
438+
'id': relation.user.id,
439+
'nick_name': relation.user.nick_name,
440+
'email': relation.user.email,
441+
'role': relation.role.name
442+
}
443+
for relation in user_role_relations
444+
]
445+
return []
446+
419447
class BatchDelete(serializers.Serializer):
420448
ids = serializers.ListField(required=True, label=_('User IDs'))
421449

apps/users/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
path("user/current/reset_password", views.ResetCurrentUserPasswordView.as_view(), name="reset_password_current"),
1717
path('workspace/<str:workspace_id>/user_list', views.WorkspaceUserListView.as_view(),
1818
name="test_workspace_id_permission"),
19+
path('workspace/<str:workspace_id>/user_member',views.WorkspaceUserMemberView.as_view(),
20+
name="test_workspace_id_permission"),
1921
path('workspace/<str:workspace_id>/user/profile', views.TestWorkspacePermissionUserView.as_view(),
2022
name="test_workspace_id_permission"),
2123
path("user_manage", views.UserManage.as_view(), name="user_manage"),

apps/users/views/user.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,20 @@ def get(self, request: Request, workspace_id):
110110
return result.success(UserManageSerializer().get_user_list(workspace_id))
111111

112112

113+
class WorkspaceUserMemberView(APIView):
114+
authentication_classes = [TokenAuth]
115+
116+
@extend_schema(methods=['GET'],
117+
summary=_("Get user member under workspace"),
118+
description=_("Get user member under workspace"),
119+
operation_id=_("Get user member under workspace"), # type: ignore
120+
tags=[_("User Management")], # type: ignore
121+
parameters=WorkspaceUserAPI.get_parameters(),
122+
responses=WorkspaceUserAPI.get_response())
123+
def get(self, request: Request, workspace_id):
124+
return result.success(UserManageSerializer().get_user_members(workspace_id))
125+
126+
113127
class UserManage(APIView):
114128
authentication_classes = [TokenAuth]
115129

0 commit comments

Comments
 (0)