Skip to content

Commit c07fd32

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

File tree

1 file changed

+24
-11
lines changed

1 file changed

+24
-11
lines changed

apps/users/serializers/user.py

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -431,18 +431,31 @@ def get_user_members(self, workspace_id):
431431
.filter(workspace_id=workspace_id)
432432
.exclude(role__id='workspace_admin')
433433
.select_related('role', 'user') # 预加载外键数据
434-
.distinct('user_id')
435434
)
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 []
435+
user_dict = {}
436+
for relation in user_role_relations:
437+
user_id = relation.user.id
438+
if user_id not in user_dict:
439+
user_dict[user_id] = {
440+
'id': user_id,
441+
'nick_name': relation.user.nick_name,
442+
'email': relation.user.email,
443+
'roles': [relation.role.name]
444+
}
445+
else:
446+
user_dict[user_id]['roles'].append(relation.role.name)
447+
448+
# 将字典值转换为列表形式
449+
return list(user_dict.values())
450+
user_list = User.objects.exclude(role=RoleConstants.ADMIN.name)
451+
return [
452+
{
453+
'id': user.id,
454+
'nick_name': user.nick_name,
455+
'email': user.email,
456+
'roles': [RoleConstants.USER.name]
457+
} for user in user_list
458+
]
446459

447460
class BatchDelete(serializers.Serializer):
448461
ids = serializers.ListField(required=True, label=_('User IDs'))

0 commit comments

Comments
 (0)