73 lines
1.8 KiB
Python
73 lines
1.8 KiB
Python
from typing import List, Optional
|
|
from pydantic import BaseModel
|
|
from datetime import date, datetime
|
|
from app.models.movement import MovementType
|
|
|
|
|
|
class MovementBase(BaseModel):
|
|
movement_type: MovementType
|
|
aircraft_registration: str
|
|
aircraft_type: Optional[str] = None
|
|
callsign: Optional[str] = None
|
|
timestamp: datetime
|
|
entity_type: str
|
|
entity_id: int
|
|
to_location: Optional[str] = None
|
|
from_location: Optional[str] = None
|
|
runway: Optional[str] = None
|
|
wind: Optional[str] = None
|
|
pressure_setting: Optional[str] = None
|
|
created_by: Optional[str] = None
|
|
ip_address: Optional[str] = None
|
|
notes: Optional[str] = None
|
|
|
|
|
|
class MovementCreate(MovementBase):
|
|
pass
|
|
|
|
|
|
class BulkMovementLog(BaseModel):
|
|
flight_kind: str
|
|
movement_date: date
|
|
movement_time: Optional[str] = None
|
|
takeoff_time: Optional[str] = None
|
|
landing_time: Optional[str] = None
|
|
contact_time: Optional[str] = None
|
|
qsy_time: Optional[str] = None
|
|
aircraft_registration: str
|
|
aircraft_type: Optional[str] = None
|
|
callsign: Optional[str] = None
|
|
from_location: Optional[str] = None
|
|
to_location: Optional[str] = None
|
|
pob: Optional[int] = None
|
|
local_nature: Optional[str] = None
|
|
circuits: Optional[int] = None
|
|
runway: Optional[str] = None
|
|
wind: Optional[str] = None
|
|
pressure_setting: Optional[str] = None
|
|
notes: Optional[str] = None
|
|
ppr_id: Optional[int] = None
|
|
movement_id: Optional[int] = None
|
|
|
|
|
|
class BulkMovementContext(BaseModel):
|
|
pprs: List[dict]
|
|
movements: List[dict]
|
|
suggested: dict
|
|
|
|
|
|
class Movement(MovementBase):
|
|
id: int
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class BulkMovementResult(BaseModel):
|
|
action: str
|
|
movement: Movement
|
|
entity_type: str
|
|
entity_id: int
|
|
message: str
|