mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 18:32:48 +00:00
refactor: workspace add user member
This commit is contained in:
parent
840fa68b98
commit
bec1cbd000
|
|
@ -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'))
|
||||
|
||||
|
|
|
|||
|
|
@ -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"),
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue