diff --git a/toardb/stationmeta/schemas.py b/toardb/stationmeta/schemas.py index 6faad6e63e1436ecabb33e86a69e7b5cfef65d22..b8d72e3e2699461d67a2e1d3123b3b501f3377f0 100644 --- a/toardb/stationmeta/schemas.py +++ b/toardb/stationmeta/schemas.py @@ -235,8 +235,8 @@ class StationmetaGlobalService(StationmetaGlobalServiceBase): class StationmetaRoleBase(BaseModel): id: int = None - role: int - status: int + role: str + status: str person_id: int diff --git a/toardb/timeseries/timeseries.py b/toardb/timeseries/timeseries.py index 617bd82da0dd98fecb239410c7bedc32f45b8199..734be478849ff1f0c302bc5a6008e25c12d2bb4b 100644 --- a/toardb/timeseries/timeseries.py +++ b/toardb/timeseries/timeseries.py @@ -7,6 +7,8 @@ from fastapi import APIRouter, Depends, HTTPException, Body from sqlalchemy.orm import Session from . import crud, schemas from toardb.utils.database import ToarDbSession, get_db +from toardb.generic.models import RC_enum, RS_enum +from toardb.utils.utils import get_str_from_value router = APIRouter() @@ -15,8 +17,15 @@ router = APIRouter() #get all entries of table timeseries @router.get('/timeseries/', response_model=List[schemas.Timeseries]) def get_all_timeseries(skip: int = 0, limit: int = None, db: Session = Depends(get_db)): - timeseries = crud.get_all_timeseries(db, skip=skip, limit=limit) - return timeseries + db_timeseries = crud.get_all_timeseries(db, skip=skip, limit=limit) + for timeseries in db_timeseries: + if timeseries.roles: + for r in timeseries.roles: + # Attention! Do not change the same object twice! + if type(r.role) is int: + r.role = get_str_from_value(db,RC_enum,r.role) + r.status = get_str_from_value(db, RS_enum, r.status) + return db_timeseries #get all metadata of one timeseries @router.get('/timeseries/{timeseries_id}', response_model=schemas.Timeseries) @@ -24,6 +33,10 @@ def get_timeseries(timeseries_id: int, db: Session = Depends(get_db)): db_timeseries = crud.get_timeseries(db, timeseries_id=timeseries_id) if db_timeseries is None: raise HTTPException(status_code=404, detail="Timeseries not found.") + if db_timeseries.roles: + for r in db_timeseries.roles: + r.role = get_str_from_value(db,RC_enum,r.role) + r.status = get_str_from_value(db, RS_enum, r.status) return db_timeseries #some more gets to be tested: @@ -37,5 +50,10 @@ def create_timeseries(timeseries: schemas.TimeseriesCreate = Body(..., embed = T variable_id=timeseries.variable_id, label=timeseries.label) if db_timeseries: raise HTTPException(status_code=400, detail="Timeseries already registered.") - return crud.create_timeseries(db=db, timeseries=timeseries) + db_timeseries=crud.create_timeseries(db=db, timeseries=timeseries) + if db_timeseries.roles: + for r in db_timeseries.roles: + r.role = get_str_from_value(db,RC_enum,r.role) + r.status = get_str_from_value(db, RS_enum, r.status) + return db_timeseries