diff --git a/toardb/stationmeta/crud.py b/toardb/stationmeta/crud.py index 24a21c4475eeb8c34ade8e13f2d1d3aa5edd52b3..8b296bd2de42e3df67869b872b5ea47763842c6d 100644 --- a/toardb/stationmeta/crud.py +++ b/toardb/stationmeta/crud.py @@ -11,7 +11,6 @@ from sqlalchemy.orm import Session from sqlalchemy.dialects.postgresql import JSONB, ARRAY from fastapi import File, UploadFile from fastapi.responses import JSONResponse -from fastapi.encoders import jsonable_encoder from . import models from .models import stationmeta_core_stationmeta_roles_table, stationmeta_core_stationmeta_annotations_table, \ CZ_enum, CV_enum, ST_enum, TA_enum @@ -26,7 +25,7 @@ def get_stationmeta_core(db: Session, station_code: str): # there is a mismatch with coordinates and additional_metadata if db_object: db_object.coordinates = get_coordinates_from_geom(db_object.coordinates) - db_object.additional_metadata = str(db_object.additional_metadata) + db_object.additional_metadata = str(db_object.additional_metadata).replace("'",'"') return db_object @@ -35,7 +34,7 @@ def get_stationmeta(db: Session, station_code: str): # there is a mismatch with coordinates and additional_metadata if db_object: db_object.coordinates = get_coordinates_from_geom(db_object.coordinates) - db_object.additional_metadata = str(db_object.additional_metadata) + db_object.additional_metadata = str(db_object.additional_metadata).replace("'",'"') return db_object @@ -44,7 +43,7 @@ def get_all_stationmeta_core(db: Session, skip : int = 0, limit: int = None): for db_object in db_objects: # there is a mismatch with coordinates and additional_metadata db_object.coordinates = get_coordinates_from_geom(db_object.coordinates) - db_object.additional_metadata = str(db_object.additional_metadata) + db_object.additional_metadata = str(db_object.additional_metadata).replace("'",'"') return db_objects @@ -53,7 +52,7 @@ def get_all_stationmeta(db: Session, skip : int = 0, limit: int = None): for db_object in db_objects: # there is a mismatch with coordinates and additional_metadata db_object.coordinates = get_coordinates_from_geom(db_object.coordinates) - db_object.additional_metadata = str(db_object.additional_metadata) + db_object.additional_metadata = str(db_object.additional_metadata).replace("'",'"') return db_objects @@ -91,7 +90,7 @@ def create_stationmeta(db: Session, stationmeta: StationmetaCreate): # in upload command, we have now: "additional_metadata": "{}" # but return from this method gives: "additional_metadata": {} # ==> there is a mismatch between model(JSONB) and schema(JSON) - db_stationmeta.additional_metadata = str(db_stationmeta.additional_metadata) + db_stationmeta.additional_metadata = str(db_stationmeta.additional_metadata).replace("'",'"') db_stationmeta.coordinate_validation_status = get_value_from_str(CV_enum,db_stationmeta.coordinate_validation_status) db_stationmeta.type_of_environment = get_value_from_str(ST_enum,db_stationmeta.type_of_environment) db_stationmeta.type_of_area = get_value_from_str(TA_enum,db_stationmeta.type_of_area) diff --git a/toardb/stationmeta/schemas.py b/toardb/stationmeta/schemas.py index 85e9e5465baad57c4aeabc7d0e5c751a2f7d405c..9710a963b2bc0787f016bcedb5897517a03f4ad2 100644 --- a/toardb/stationmeta/schemas.py +++ b/toardb/stationmeta/schemas.py @@ -45,7 +45,8 @@ class StationmetaCoreBase(BaseModel): coordinate_validator_id: int class Config(BaseConfig): - arbitrary_types_allowed = True + orm_mode = True +# arbitrary_types_allowed = True @validator('coordinate_validation_status') def check_coordinate_validation_status(cls, v):