Remove tach field from aircraft
This commit is contained in:
parent
dafcacf28a
commit
c1050d8234
@ -23,11 +23,26 @@ async def retrieve_aircraft(user: str = "") -> list[AircraftDisplaySchema]:
|
||||
return aircraft
|
||||
|
||||
|
||||
async def retrieve_aircraft_by_tail(tail_no: str) -> AircraftDisplaySchema:
|
||||
"""
|
||||
Retrieve details about the requested aircraft
|
||||
|
||||
:param tail_no: Tail number of desired aircraft
|
||||
:return: Aircraft details
|
||||
"""
|
||||
aircraft = await aircraft_collection.find_one({"tail_no": tail_no})
|
||||
|
||||
if aircraft is None:
|
||||
raise HTTPException(404, "Aircraft not found")
|
||||
|
||||
return AircraftDisplaySchema(**aircraft_display_helper(aircraft))
|
||||
|
||||
|
||||
async def retrieve_aircraft_by_id(id: str) -> AircraftDisplaySchema:
|
||||
"""
|
||||
Retrieve details about the requested aircraft
|
||||
|
||||
:param id: ID of desired aircraft
|
||||
:param tail_no: Tail number of desired aircraft
|
||||
:return: Aircraft details
|
||||
"""
|
||||
aircraft = await aircraft_collection.find_one({"_id": ObjectId(id)})
|
||||
|
@ -59,7 +59,7 @@ async def get_categories(category: str = "Airplane") -> dict:
|
||||
return {"classes": category_class[category]}
|
||||
|
||||
|
||||
@router.get('/{aircraft_id}', summary="Get details of a given aircraft", response_model=AircraftDisplaySchema,
|
||||
@router.get('/id/{aircraft_id}', summary="Get details of a given aircraft", response_model=AircraftDisplaySchema,
|
||||
status_code=200)
|
||||
async def get_aircraft_by_id(aircraft_id: str,
|
||||
user: UserDisplaySchema = Depends(get_current_user)) -> AircraftDisplaySchema:
|
||||
@ -71,6 +71,27 @@ async def get_aircraft_by_id(aircraft_id: str,
|
||||
:return: Aircraft details
|
||||
"""
|
||||
aircraft = await db.retrieve_aircraft_by_id(aircraft_id)
|
||||
|
||||
if str(aircraft.user) != user.id and AuthLevel(user.level) != AuthLevel.ADMIN:
|
||||
logger.info("Attempted access to unauthorized aircraft by %s", user.username)
|
||||
raise HTTPException(403, "Unauthorized access")
|
||||
|
||||
return aircraft
|
||||
|
||||
|
||||
@router.get('/tail/{tail_no}', summary="Get details of a given aircraft", response_model=AircraftDisplaySchema,
|
||||
status_code=200)
|
||||
async def get_aircraft_by_tail(tail_no: str,
|
||||
user: UserDisplaySchema = Depends(get_current_user)) -> AircraftDisplaySchema:
|
||||
"""
|
||||
Get all details of a given aircraft
|
||||
|
||||
:param tail_no: Tail number of requested aircraft
|
||||
:param user: Currently logged-in user
|
||||
:return: Aircraft details
|
||||
"""
|
||||
aircraft = await db.retrieve_aircraft_by_tail(tail_no)
|
||||
|
||||
if str(aircraft.user) != user.id and AuthLevel(user.level) != AuthLevel.ADMIN:
|
||||
logger.info("Attempted access to unauthorized aircraft by %s", user.username)
|
||||
raise HTTPException(403, "Unauthorized access")
|
||||
@ -89,9 +110,14 @@ async def add_aircraft(aircraft_body: AircraftCreateSchema,
|
||||
:return: Error message if request invalid, else ID of newly created aircraft
|
||||
"""
|
||||
|
||||
aircraft = await db.insert_aircraft(aircraft_body, user.id)
|
||||
try:
|
||||
await db.retrieve_aircraft_by_tail(aircraft_body.tail_no)
|
||||
except HTTPException:
|
||||
aircraft = await db.insert_aircraft(aircraft_body, user.id)
|
||||
|
||||
return {"id": str(aircraft)}
|
||||
return {"id": str(aircraft)}
|
||||
|
||||
raise HTTPException(400, "Aircraft with tail number " + aircraft_body.tail_no + " already exists", )
|
||||
|
||||
|
||||
@router.put('/{aircraft_id}', summary="Update the given aircraft with new information", status_code=200)
|
||||
|
@ -86,7 +86,6 @@ class AircraftCreateSchema(BaseModel):
|
||||
aircraft_class: AircraftClass
|
||||
|
||||
hobbs: PositiveFloat
|
||||
tach: PositiveFloat
|
||||
|
||||
@field_validator('aircraft_class')
|
||||
def validate_class(cls, v: str, info: ValidationInfo, **kwargs):
|
||||
|
@ -4,20 +4,18 @@ from typing import Optional, Dict, Union, List
|
||||
from bson import ObjectId
|
||||
from pydantic import BaseModel
|
||||
|
||||
from database.aircraft import retrieve_aircraft_by_id
|
||||
from schemas.utils import PositiveFloatNullable, PositiveFloat, PositiveInt, PyObjectId
|
||||
|
||||
|
||||
class FlightSchema(BaseModel):
|
||||
class FlightCreateSchema(BaseModel):
|
||||
date: datetime.datetime
|
||||
aircraft: str
|
||||
waypoint_from: Optional[str] = None
|
||||
waypoint_to: Optional[str] = None
|
||||
route: Optional[str] = None
|
||||
|
||||
hobbs_start: Optional[PositiveFloatNullable] = None
|
||||
hobbs_end: Optional[PositiveFloatNullable] = None
|
||||
tach_start: Optional[PositiveFloatNullable] = None
|
||||
tach_end: Optional[PositiveFloatNullable] = None
|
||||
|
||||
time_start: Optional[datetime.datetime] = None
|
||||
time_off: Optional[datetime.datetime] = None
|
||||
@ -53,14 +51,9 @@ class FlightSchema(BaseModel):
|
||||
comments: Optional[str] = None
|
||||
|
||||
|
||||
class FlightCreateSchema(FlightSchema):
|
||||
aircraft: str
|
||||
|
||||
|
||||
class FlightDisplaySchema(FlightSchema):
|
||||
class FlightDisplaySchema(FlightCreateSchema):
|
||||
user: PyObjectId
|
||||
id: PyObjectId
|
||||
aircraft: PyObjectId
|
||||
|
||||
|
||||
class FlightConciseSchema(BaseModel):
|
||||
@ -93,7 +86,6 @@ def flight_display_helper(flight: dict) -> dict:
|
||||
"""
|
||||
flight["id"] = str(flight["_id"])
|
||||
flight["user"] = str(flight["user"])
|
||||
flight["aircraft"] = str(flight["aircraft"])
|
||||
|
||||
return flight
|
||||
|
||||
@ -107,7 +99,6 @@ async def flight_concise_helper(flight: dict) -> dict:
|
||||
"""
|
||||
flight["id"] = str(flight["_id"])
|
||||
flight["user"] = str(flight["user"])
|
||||
flight["aircraft"] = (await retrieve_aircraft_by_id(str(flight["aircraft"]))).tail_no
|
||||
|
||||
return flight
|
||||
|
||||
@ -121,6 +112,5 @@ def flight_add_helper(flight: dict, user: str) -> dict:
|
||||
:return: Combined dict that can be inserted into db
|
||||
"""
|
||||
flight["user"] = ObjectId(user)
|
||||
flight["aircraft"] = ObjectId(flight["aircraft"])
|
||||
|
||||
return flight
|
||||
|
Loading…
x
Reference in New Issue
Block a user