♻️ Re-enable user update path operations for frontend client generation (#574)

This commit is contained in:
Alejandra
2023-12-27 14:39:42 -05:00
committed by GitHub
parent 47d30b75c3
commit 6faa5f66d5
3 changed files with 62 additions and 51 deletions

View File

@@ -1,7 +1,7 @@
from typing import Annotated, Any from typing import Any
from fastapi import APIRouter, Depends, HTTPException from fastapi import APIRouter, HTTPException
from sqlmodel import Session, select from sqlmodel import select
from app.api.deps import CurrentUser, SessionDep from app.api.deps import CurrentUser, SessionDep
from app.models import Item, ItemCreate, ItemOut, ItemUpdate from app.models import Item, ItemCreate, ItemOut, ItemUpdate

View File

@@ -1,8 +1,6 @@
from typing import Annotated, Any, List from typing import Any, List
from fastapi import APIRouter, Body, Depends, HTTPException from fastapi import APIRouter, Depends, HTTPException
from fastapi.encoders import jsonable_encoder
from pydantic.networks import EmailStr
from sqlmodel import select from sqlmodel import select
from app import crud from app import crud
@@ -12,7 +10,14 @@ from app.api.deps import (
get_current_active_superuser, get_current_active_superuser,
) )
from app.core.config import settings from app.core.config import settings
from app.models import User, UserCreate, UserCreateOpen, UserOut, UserUpdate from app.models import (
User,
UserCreate,
UserCreateOpen,
UserOut,
UserUpdate,
UserUpdateMe,
)
from app.utils import send_new_account_email from app.utils import send_new_account_email
router = APIRouter() router = APIRouter()
@@ -54,29 +59,24 @@ def create_user(*, session: SessionDep, user_in: UserCreate) -> Any:
return user return user
# TODO: Refactor when SQLModel has update @router.put("/me", response_model=UserOut)
# @router.put("/me") def update_user_me(
# def update_user_me( *, session: SessionDep, body: UserUpdateMe, current_user: CurrentUser
# *, ) -> Any:
# session: SessionDep, """
# password: Annotated[str, Body(None)], Update own user.
# full_name: Annotated[str, Body(None)], """
# email: Annotated[EmailStr, Body(None)], # TODO: Refactor when SQLModel has update
# current_user: CurrentUser, # current_user_data = jsonable_encoder(current_user)
# ) -> UserOut: # user_in = UserUpdate(**current_user_data)
# """ # if password is not None:
# Update own user. # user_in.password = password
# """ # if full_name is not None:
# current_user_data = jsonable_encoder(current_user) # user_in.full_name = full_name
# user_in = UserUpdate(**current_user_data) # if email is not None:
# if password is not None: # user_in.email = email
# user_in.password = password # user = crud.user.update(session, session_obj=current_user, obj_in=user_in)
# if full_name is not None: # return user
# user_in.full_name = full_name
# if email is not None:
# user_in.email = email
# user = crud.user.update(session, session_obj=current_user, obj_in=user_in)
# return user
@router.get("/me", response_model=UserOut) @router.get("/me", response_model=UserOut)
@@ -127,22 +127,27 @@ def read_user_by_id(
return user return user
# TODO: Refactor when SQLModel has update @router.put(
# @router.put("/{user_id}", dependencies=[Depends(get_current_active_superuser)]) "/{user_id}",
# def update_user( dependencies=[Depends(get_current_active_superuser)],
# *, response_model=UserOut,
# session: SessionDep, )
# user_id: int, def update_user(
# user_in: UserUpdate, *,
# ) -> UserOut: session: SessionDep,
# """ user_id: int,
# Update a user. user_in: UserUpdate,
# """ ) -> Any:
# user = session.get(User, user_id) """
# if not user: Update a user.
# raise HTTPException( """
# status_code=404,
# detail="The user with this username does not exist in the system", # TODO: Refactor when SQLModel has update
# ) # user = session.get(User, user_id)
# user = crud.user.update(session, db_obj=user, obj_in=user_in) # if not user:
# return user # type: ignore # raise HTTPException(
# status_code=404,
# detail="The user with this username does not exist in the system",
# )
# user = crud.user.update(session, db_obj=user, obj_in=user_in)
# return user

View File

@@ -29,6 +29,11 @@ class UserUpdate(UserBase):
password: Union[str, None] = None password: Union[str, None] = None
class UserUpdateMe(BaseModel):
password: Union[str, None] = None
full_name: Union[str, None] = None
email: Union[EmailStr, None] = None
# Database model, database table inferred from class name # Database model, database table inferred from class name
class User(UserBase, table=True): class User(UserBase, table=True):
id: Union[int, None] = Field(default=None, primary_key=True) id: Union[int, None] = Field(default=None, primary_key=True)
@@ -87,6 +92,7 @@ class Token(BaseModel):
class TokenPayload(BaseModel): class TokenPayload(BaseModel):
sub: Union[int, None] = None sub: Union[int, None] = None
class NewPassword(BaseModel): class NewPassword(BaseModel):
token: str token: str
new_password: str new_password: str