Delete flights associated with user on user delete
This commit is contained in:
parent
e788536956
commit
c2a649852d
@ -4,7 +4,7 @@ from bson import ObjectId
|
||||
from fastapi import HTTPException
|
||||
|
||||
from database.utils import user_helper, create_user_helper, system_user_helper
|
||||
from .db import user_collection
|
||||
from .db import user_collection, flight_collection
|
||||
from routes.utils import get_hashed_password
|
||||
from schemas.user import UserDisplaySchema, UserCreateSchema, UserSystemSchema, AuthLevel
|
||||
|
||||
@ -84,7 +84,7 @@ async def get_user_system_info(username: str) -> UserSystemSchema:
|
||||
|
||||
async def delete_user(id: str) -> UserDisplaySchema:
|
||||
"""
|
||||
Delete given user from the database
|
||||
Delete given user and all associated flights from the database
|
||||
|
||||
:param id: ID of user to delete
|
||||
:return: Information of deleted user
|
||||
@ -95,6 +95,10 @@ async def delete_user(id: str) -> UserDisplaySchema:
|
||||
raise HTTPException(404, "User not found")
|
||||
|
||||
await user_collection.delete_one({"_id": ObjectId(id)})
|
||||
|
||||
# Delete all flights associated with user
|
||||
await flight_collection.delete_many({"user": ObjectId(id)})
|
||||
|
||||
return UserDisplaySchema(**user_helper(user))
|
||||
|
||||
|
||||
|
@ -13,7 +13,8 @@ router = APIRouter()
|
||||
logger = logging.getLogger("flights")
|
||||
|
||||
|
||||
@router.get('/', summary="Get flights logged by the currently logged-in user", status_code=200)
|
||||
@router.get('/', summary="Get flights logged by the currently logged-in user", status_code=200,
|
||||
response_model=list[FlightConciseSchema])
|
||||
async def get_flights(user: UserDisplaySchema = Depends(get_current_user)) -> list[FlightConciseSchema]:
|
||||
"""
|
||||
Get a list of the flights logged by the currently logged-in user
|
||||
@ -26,7 +27,7 @@ async def get_flights(user: UserDisplaySchema = Depends(get_current_user)) -> li
|
||||
|
||||
|
||||
@router.get('/all', summary="Get all flights logged by all users", status_code=200,
|
||||
dependencies=[Depends(admin_required)])
|
||||
dependencies=[Depends(admin_required)], response_model=list[FlightConciseSchema])
|
||||
async def get_all_flights() -> list[FlightConciseSchema]:
|
||||
"""
|
||||
Get a list of all flights logged by any user
|
||||
@ -39,7 +40,7 @@ async def get_all_flights() -> list[FlightConciseSchema]:
|
||||
|
||||
@router.get('/{flight_id}', summary="Get details of a given flight", response_model=FlightDisplaySchema,
|
||||
status_code=200)
|
||||
async def get_flight(flight_id: str, user: UserDisplaySchema = Depends(get_current_user)):
|
||||
async def get_flight(flight_id: str, user: UserDisplaySchema = Depends(get_current_user)) -> FlightDisplaySchema:
|
||||
"""
|
||||
Get all details of a given flight
|
||||
|
||||
@ -56,7 +57,7 @@ async def get_flight(flight_id: str, user: UserDisplaySchema = Depends(get_curre
|
||||
|
||||
|
||||
@router.post('/', summary="Add a flight logbook entry", status_code=200)
|
||||
async def add_flight(flight_body: FlightCreateSchema, user: UserDisplaySchema = Depends(get_current_user)):
|
||||
async def add_flight(flight_body: FlightCreateSchema, user: UserDisplaySchema = Depends(get_current_user)) -> dict:
|
||||
"""
|
||||
Add a flight logbook entry
|
||||
|
||||
@ -89,13 +90,13 @@ async def update_flight(flight_id: str, flight_body: FlightCreateSchema,
|
||||
logger.info("Attempted access to unauthorized flight by %s", user.username)
|
||||
raise HTTPException(403, "Unauthorized access")
|
||||
|
||||
updated_flight = await db.update_flight(flight_body, flight_id)
|
||||
updated_flight_id = await db.update_flight(flight_body, flight_id)
|
||||
|
||||
return str(updated_flight)
|
||||
return str(updated_flight_id)
|
||||
|
||||
|
||||
@router.delete('/{flight_id}', summary="Delete the given flight", status_code=200)
|
||||
async def delete_flight(flight_id: str, user: UserDisplaySchema = Depends(get_current_user)):
|
||||
@router.delete('/{flight_id}', summary="Delete the given flight", status_code=200, response_model=FlightDisplaySchema)
|
||||
async def delete_flight(flight_id: str, user: UserDisplaySchema = Depends(get_current_user)) -> FlightDisplaySchema:
|
||||
"""
|
||||
Delete the given flight
|
||||
|
||||
|
@ -41,7 +41,7 @@ async def add_user(body: UserCreateSchema) -> dict:
|
||||
|
||||
@router.delete('/{user_id}', summary="Delete given user and all associated flights", status_code=200,
|
||||
dependencies=[Depends(admin_required)])
|
||||
async def remove_user(user_id: str) -> None:
|
||||
async def remove_user(user_id: str) -> UserDisplaySchema:
|
||||
"""
|
||||
Delete given user from database along with all flights associated with said user
|
||||
|
||||
@ -54,12 +54,8 @@ async def remove_user(user_id: str) -> None:
|
||||
if not deleted:
|
||||
logger.info("Attempt to delete nonexistent user %s", user_id)
|
||||
raise HTTPException(401, "User does not exist")
|
||||
# except ValidationError:
|
||||
# logger.debug("Invalid user delete request")
|
||||
# raise HTTPException(400, "Invalid user")
|
||||
|
||||
# Delete all flights associated with the user TODO
|
||||
# Flight.objects(user=user_id).delete()
|
||||
return deleted
|
||||
|
||||
|
||||
@router.get('/', summary="Get a list of all users", status_code=200, response_model=list[UserDisplaySchema],
|
||||
|
Loading…
x
Reference in New Issue
Block a user