From 4e0ab4ead02a4eb21dc8157ac901a87052aaf125 Mon Sep 17 00:00:00 2001 From: BasudevBharatBhushan Date: Sun, 29 Jun 2025 13:20:00 +0530 Subject: [PATCH] feat: added route for fetching layout data --- python_fm_dapi_weaver/controllers/index.py | 6 ++-- python_fm_dapi_weaver/controllers/records.py | 29 ++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/python_fm_dapi_weaver/controllers/index.py b/python_fm_dapi_weaver/controllers/index.py index 235d908..e850d88 100644 --- a/python_fm_dapi_weaver/controllers/index.py +++ b/python_fm_dapi_weaver/controllers/index.py @@ -6,7 +6,8 @@ find_record, update_record, delete_record, - upload_container + upload_container, + fetch_layouts ) # List of method names that do not require token/session validation. @@ -22,7 +23,8 @@ "deleteRecord": delete_record, "signin": signin, "signout" : signout, - "uploadContainer":upload_container + "uploadContainer":upload_container, + "fetchLayouts": fetch_layouts } diff --git a/python_fm_dapi_weaver/controllers/records.py b/python_fm_dapi_weaver/controllers/records.py index f1a32f3..237ed76 100644 --- a/python_fm_dapi_weaver/controllers/records.py +++ b/python_fm_dapi_weaver/controllers/records.py @@ -318,3 +318,32 @@ async def upload_container(req: Request): raise HTTPException(status_code=500, detail=f"Unexpected error: {str(e)}") +async def fetch_layouts(req: Request): + data = req.state.body + token = req.state.fmSessionToken + fm_server = data.get("fmServer") + database = data.get("database") + + validate_required_params({ + "fmSessionToken": token, + "fmServer": fm_server, + "database": database + }) + + apiUrl = f"https://{fm_server}/fmi/data/vLatest/databases/{database}/layouts" + + headers = { + "Authorization": f"Bearer {token}" + } + + try: + response = requests.get(apiUrl, headers=headers, verify=False) + response.raise_for_status() + json_data = response.json() + return { + "layouts": json_data["response"]["layouts"], + "session": token + } + + except requests.HTTPError as e: + raise handle_api_error(e,"An error occurred while fetching the layouts.") \ No newline at end of file