Skip to content
This repository was archived by the owner on Sep 22, 2023. It is now read-only.

Commit 160e718

Browse files
authored
fix: Use predefined values for role and status args for CreateUser/ModifyUser mutations (#172)
* Previously `status` was using a wrong type (`bool`).
1 parent 74cd26c commit 160e718

File tree

2 files changed

+38
-7
lines changed

2 files changed

+38
-7
lines changed

changes/172.fix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix wrong type and default value of `status` argument for `User.create()` and `User.update()` functional APIs and let `role` and `status` arguments accept explicit enum types in addition to raw strings

src/ai/backend/client/func/user.py

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
from __future__ import annotations
2+
3+
import enum
14
import textwrap
25
from typing import AsyncIterator, Iterable, Sequence, Union
36
import uuid
@@ -10,6 +13,8 @@
1013

1114
__all__ = (
1215
'User',
16+
'UserStatus',
17+
'UserRole',
1318
)
1419

1520
_default_list_fields = (
@@ -24,6 +29,26 @@
2429
)
2530

2631

32+
class UserRole(str, enum.Enum):
33+
"""
34+
The role (privilege level) of users.
35+
"""
36+
SUPERADMIN = 'superadmin'
37+
ADMIN = 'admin'
38+
USER = 'user'
39+
MONITOR = 'monitor'
40+
41+
42+
class UserStatus(enum.Enum):
43+
"""
44+
The detailed status of users to represent the signup process and account lifecycles.
45+
"""
46+
ACTIVE = 'active'
47+
INACTIVE = 'inactive'
48+
DELETED = 'deleted'
49+
BEFORE_VERIFICATION = 'before-verification'
50+
51+
2752
class User(BaseFunction):
2853
"""
2954
Provides interactions with users.
@@ -186,8 +211,12 @@ async def detail_by_uuid(
186211
async def create(
187212
cls,
188213
domain_name: str,
189-
email: str, password: str, username: str = None, full_name: str = None,
190-
role: str = 'user', status: bool = True,
214+
email: str,
215+
password: str,
216+
username: str = None,
217+
full_name: str = None,
218+
role: UserRole | str = UserRole.USER,
219+
status: UserStatus | str = UserStatus.ACTIVE,
191220
need_password_change: bool = False,
192221
description: str = '',
193222
group_ids: Iterable[str] = None,
@@ -213,8 +242,8 @@ async def create(
213242
'password': password,
214243
'username': username,
215244
'full_name': full_name,
216-
'role': role,
217-
'status': status,
245+
'role': role.value if isinstance(role, UserRole) else role,
246+
'status': status.value if isinstance(status, UserStatus) else status,
218247
'need_password_change': need_password_change,
219248
'description': description,
220249
'domain_name': domain_name,
@@ -232,7 +261,8 @@ async def update(
232261
password: str = None, username: str = None,
233262
full_name: str = None,
234263
domain_name: str = None,
235-
role: str = None, status: bool = None,
264+
role: UserRole | str = UserRole.USER,
265+
status: UserStatus | str = UserStatus.ACTIVE,
236266
need_password_change: bool = None,
237267
description: str = None,
238268
group_ids: Iterable[str] = None,
@@ -256,8 +286,8 @@ async def update(
256286
'username': username,
257287
'full_name': full_name,
258288
'domain_name': domain_name,
259-
'role': role,
260-
'status': status,
289+
'role': role.value if isinstance(role, UserRole) else role,
290+
'status': status.value if isinstance(status, UserStatus) else status,
261291
'need_password_change': need_password_change,
262292
'description': description,
263293
'group_ids': group_ids,

0 commit comments

Comments
 (0)