♻️ 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 sqlmodel import Session, select
from fastapi import APIRouter, HTTPException
from sqlmodel import select
from app.api.deps import CurrentUser, SessionDep
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.encoders import jsonable_encoder
from pydantic.networks import EmailStr
from fastapi import APIRouter, Depends, HTTPException
from sqlmodel import select
from app import crud
@@ -12,7 +10,14 @@ from app.api.deps import (
get_current_active_superuser,
)
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
router = APIRouter()
@@ -54,19 +59,14 @@ def create_user(*, session: SessionDep, user_in: UserCreate) -> Any:
return user
@router.put("/me", response_model=UserOut)
def update_user_me(
*, session: SessionDep, body: UserUpdateMe, current_user: CurrentUser
) -> Any:
"""
Update own user.
"""
# TODO: Refactor when SQLModel has update
# @router.put("/me")
# def update_user_me(
# *,
# session: SessionDep,
# password: Annotated[str, Body(None)],
# full_name: Annotated[str, Body(None)],
# email: Annotated[EmailStr, Body(None)],
# current_user: CurrentUser,
# ) -> UserOut:
# """
# Update own user.
# """
# current_user_data = jsonable_encoder(current_user)
# user_in = UserUpdate(**current_user_data)
# if password is not None:
@@ -127,17 +127,22 @@ def read_user_by_id(
return user
@router.put(
"/{user_id}",
dependencies=[Depends(get_current_active_superuser)],
response_model=UserOut,
)
def update_user(
*,
session: SessionDep,
user_id: int,
user_in: UserUpdate,
) -> Any:
"""
Update a user.
"""
# TODO: Refactor when SQLModel has update
# @router.put("/{user_id}", dependencies=[Depends(get_current_active_superuser)])
# def update_user(
# *,
# session: SessionDep,
# user_id: int,
# user_in: UserUpdate,
# ) -> UserOut:
# """
# Update a user.
# """
# user = session.get(User, user_id)
# if not user:
# raise HTTPException(
@@ -145,4 +150,4 @@ def read_user_by_id(
# 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 # type: ignore
# return user

View File

@@ -29,6 +29,11 @@ class UserUpdate(UserBase):
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
class User(UserBase, table=True):
id: Union[int, None] = Field(default=None, primary_key=True)
@@ -87,6 +92,7 @@ class Token(BaseModel):
class TokenPayload(BaseModel):
sub: Union[int, None] = None
class NewPassword(BaseModel):
token: str
new_password: str