Browse Source

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

pull/13907/head
Alejandra 2 years ago
committed by GitHub
parent
commit
6faa5f66d5
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      src/backend/app/app/api/api_v1/endpoints/items.py
  2. 61
      src/backend/app/app/api/api_v1/endpoints/users.py
  3. 6
      src/backend/app/app/models.py

6
src/backend/app/app/api/api_v1/endpoints/items.py

@ -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

61
src/backend/app/app/api/api_v1/endpoints/users.py

@ -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,19 +59,14 @@ def create_user(*, session: SessionDep, user_in: UserCreate) -> Any:
return user 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 # 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) # current_user_data = jsonable_encoder(current_user)
# user_in = UserUpdate(**current_user_data) # user_in = UserUpdate(**current_user_data)
# if password is not None: # if password is not None:
@ -127,17 +127,22 @@ def read_user_by_id(
return user 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 # 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) # user = session.get(User, user_id)
# if not user: # if not user:
# raise HTTPException( # raise HTTPException(
@ -145,4 +150,4 @@ def read_user_by_id(
# detail="The user with this username does not exist in the system", # detail="The user with this username does not exist in the system",
# ) # )
# user = crud.user.update(session, db_obj=user, obj_in=user_in) # user = crud.user.update(session, db_obj=user, obj_in=user_in)
# return user # type: ignore # return user

6
src/backend/app/app/models.py

@ -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

Loading…
Cancel
Save