Skip to content

Commit 690480c

Browse files
Jeny SadadiaJenySadadia
authored andcommitted
api.main: fix pydantic v2 warnings for UserGroup
Fix the below warnings from pydantic v2 while creating or updating a user account with user groups: ``` kernelci-api | /home/kernelci/.local/lib/python3.11/site-packages/pydantic/main.py:390: UserWarning: Pydantic serializer warnings: kernelci-api | Expected `str` but got `UserGroup` with value `UserGroup(id=ObjectId('64...16ad'), name='kernelci')` - serialized value may not be as expected kernelci-api | return self.__pydantic_serializer__.to_python( ``` Signed-off-by: Jeny Sadadia <[email protected]>
1 parent 96245e6 commit 690480c

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

api/main.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@
5252
User,
5353
UserRead,
5454
UserCreate,
55+
UserCreateRequest,
5556
UserUpdate,
57+
UserUpdateRequest,
5658
UserGroup,
5759
)
5860
from .metrics import Metrics
@@ -157,7 +159,7 @@ def get_current_superuser(user: User = Depends(
157159

158160
@app.post("/user/register", response_model=UserRead, tags=["user"],
159161
response_model_by_alias=False)
160-
async def register(request: Request, user: UserCreate,
162+
async def register(request: Request, user: UserCreateRequest,
161163
current_user: User = Depends(get_current_superuser)):
162164
"""User registration route
163165
@@ -183,9 +185,11 @@ async def register(request: Request, user: UserCreate,
183185
detail=f"User group does not exist with name: \
184186
{group_name}")
185187
groups.append(group)
186-
user.groups = groups
188+
user_create = UserCreate(**(user.model_dump(
189+
exclude={'groups'}, exclude_none=True)))
190+
user_create.groups = groups
187191
created_user = await register_router.routes[0].endpoint(
188-
request, user, user_manager)
192+
request, user_create, user_manager)
189193
# Update user to be an admin user explicitly if requested as
190194
# `fastapi-users` register route does not allow it
191195
if user.is_superuser:
@@ -233,7 +237,7 @@ async def register(request: Request, user: UserCreate,
233237

234238
@app.patch("/user/me", response_model=UserRead, tags=["user"],
235239
response_model_by_alias=False)
236-
async def update_me(request: Request, user: UserUpdate,
240+
async def update_me(request: Request, user: UserUpdateRequest,
237241
current_user: User = Depends(get_current_user)):
238242
"""User update route
239243
@@ -258,15 +262,17 @@ async def update_me(request: Request, user: UserUpdate,
258262
detail=f"User group does not exist with name: \
259263
{group_name}")
260264
groups.append(group)
265+
user_update = UserUpdate(**(user.model_dump(
266+
exclude={'groups'}, exclude_none=True)))
261267
if groups:
262-
user.groups = groups
268+
user_update.groups = groups
263269
return await users_router.routes[1].endpoint(
264-
request, user, current_user, user_manager)
270+
request, user_update, current_user, user_manager)
265271

266272

267273
@app.patch("/user/{user_id}", response_model=UserRead, tags=["user"],
268274
response_model_by_alias=False)
269-
async def update_user(user_id: str, request: Request, user: UserUpdate,
275+
async def update_user(user_id: str, request: Request, user: UserUpdateRequest,
270276
current_user: User = Depends(get_current_superuser)):
271277
"""Router to allow admin users to update other user account"""
272278
metrics.add('http_requests_total', 1)
@@ -295,11 +301,14 @@ async def update_user(user_id: str, request: Request, user: UserUpdate,
295301
detail=f"User group does not exist with name: \
296302
{group_name}")
297303
groups.append(group)
304+
user_update = UserUpdate(**(user.model_dump(
305+
exclude={'groups'}, exclude_none=True)))
306+
298307
if groups:
299-
user.groups = groups
308+
user_update.groups = groups
300309

301310
updated_user = await users_router.routes[3].endpoint(
302-
user, request, user_from_id, user_manager
311+
user_update, request, user_from_id, user_manager
303312
)
304313
# Update user to be an admin user explicitly if requested as
305314
# `fastapi-users` user update route does not allow it

0 commit comments

Comments
 (0)