From f4b69aace0b203d8acc22d72f0506377c8703a30 Mon Sep 17 00:00:00 2001 From: James Pattinson Date: Wed, 10 Dec 2025 13:29:12 +0000 Subject: [PATCH] Info display tweaks --- backend/app/api/endpoints/public.py | 6 ++-- backend/app/crud/crud_ppr.py | 5 +-- backend/app/schemas/ppr.py | 19 ++++++++++ web/admin.html | 55 +++++++++++++++++------------ web/index.html | 2 +- web/ppr.html | 47 ++++++++++++++++++++++-- 6 files changed, 103 insertions(+), 31 deletions(-) diff --git a/backend/app/api/endpoints/public.py b/backend/app/api/endpoints/public.py index dfecf62..f92f209 100644 --- a/backend/app/api/endpoints/public.py +++ b/backend/app/api/endpoints/public.py @@ -3,19 +3,19 @@ from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.api.deps import get_db from app.crud.crud_ppr import ppr as crud_ppr -from app.schemas.ppr import PPR +from app.schemas.ppr import PPRPublic router = APIRouter() -@router.get("/arrivals", response_model=List[PPR]) +@router.get("/arrivals", response_model=List[PPRPublic]) async def get_public_arrivals(db: Session = Depends(get_db)): """Get today's arrivals for public display""" arrivals = crud_ppr.get_arrivals_today(db) return arrivals -@router.get("/departures", response_model=List[PPR]) +@router.get("/departures", response_model=List[PPRPublic]) async def get_public_departures(db: Session = Depends(get_db)): """Get today's departures for public display""" departures = crud_ppr.get_departures_today(db) diff --git a/backend/app/crud/crud_ppr.py b/backend/app/crud/crud_ppr.py index 86ccbcd..2d16e75 100644 --- a/backend/app/crud/crud_ppr.py +++ b/backend/app/crud/crud_ppr.py @@ -48,7 +48,7 @@ class CRUDPPR: return query.order_by(desc(PPRRecord.submitted_dt)).offset(skip).limit(limit).all() def get_arrivals_today(self, db: Session) -> List[PPRRecord]: - """Get today's arrivals""" + """Get today's arrivals - includes aircraft that have arrived and may have departed""" today = date.today() return db.query(PPRRecord).filter( and_( @@ -56,7 +56,8 @@ class CRUDPPR: or_( PPRRecord.status == PPRStatus.NEW, PPRRecord.status == PPRStatus.CONFIRMED, - PPRRecord.status == PPRStatus.LANDED + PPRRecord.status == PPRStatus.LANDED, + PPRRecord.status == PPRStatus.DEPARTED ) ) ).order_by(PPRRecord.eta).all() diff --git a/backend/app/schemas/ppr.py b/backend/app/schemas/ppr.py index 61baf24..f04dbc6 100644 --- a/backend/app/schemas/ppr.py +++ b/backend/app/schemas/ppr.py @@ -96,6 +96,25 @@ class PPR(PPRInDBBase): pass +class PPRPublic(BaseModel): + """Public schema for arrivals/departures board - excludes sensitive data""" + id: int + status: PPRStatus + ac_reg: str + ac_type: str + ac_call: Optional[str] = None + in_from: str + eta: datetime + out_to: Optional[str] = None + etd: Optional[datetime] = None + landed_dt: Optional[datetime] = None + departed_dt: Optional[datetime] = None + submitted_dt: datetime + + class Config: + from_attributes = True + + class PPRInDB(PPRInDBBase): pass diff --git a/web/admin.html b/web/admin.html index 3cc7f1d..4d68f2e 100644 --- a/web/admin.html +++ b/web/admin.html @@ -564,7 +564,7 @@