Spaces:
No application file
No application file
| Formato que acepta el curl, hay que darle forma al json de abajo al json de arriba debe parecerse | |
| Ejemplo | |
| curl -s -u "<CLIENT-ID>@<INSTANCE-NAME>:<CLIENT-SECRET>" --url "https://<instance_name>.fs.ocs.oraclecloud.com/rest/ofscCore/v1/resources/custom-actions/bulkUpdateWorkSchedules" -X POST -d '[ | |
| { | |
| "resourceId": "test_bucket", | |
| "workSchedules": [ | |
| { | |
| "recordType": "working", | |
| "startDate": "2018-04-16", | |
| "endDate": "2018-04-17", | |
| "workTimeStart": "10:00:00", | |
| "workTimeEnd": "22:00:00", | |
| "shiftType": "regular", | |
| "recurrence": { | |
| "recurrenceType": "weekly", | |
| "recurEvery": 5 | |
| }, | |
| "comment": "default test_bucket resources work schedule" | |
| }, | |
| { | |
| "recordType": "schedule", | |
| "startDate": "2018-04-16", | |
| "endDate": "2018-04-17", | |
| "scheduleLabel": "On-call+2nd" | |
| }, | |
| { | |
| "startDate": "2018-04-16", | |
| "endDate": "2018-04-17", | |
| "recordType": "non-working", | |
| "scheduleLabel": "On-call+2nd", | |
| "nonWorkingReason": "day-off" | |
| }, | |
| { | |
| "recordType": "schedule", | |
| "startDate": "2018-04-16", | |
| "endDate": "2018-04-17", | |
| "scheduleLabel": "PAR-2nd/ODD-1st" | |
| } | |
| ] | |
| }, | |
| { | |
| "resourceId": "test_tech", | |
| "workSchedules": [ | |
| { | |
| "startDate": "2018-04-16", | |
| "endDate": "2018-04-17", | |
| "recordType": "schedule", | |
| "scheduleLabel": "PAR2nd/ODD-1st" | |
| } | |
| ] | |
| } | |
| ]' | |
| Actual: | |
| [ | |
| { | |
| "resourceId": 44888333, | |
| "1706400000000": "Descanso Semanal", | |
| "1706486400000": "Ok", | |
| "1706572800000": "Ok", | |
| "1706659200000": "Ok", | |
| "1706745600000": "Ok", | |
| "1706832000000": "Ok", | |
| "1706918400000": "Ok" | |
| }, | |
| { | |
| "resourceId": 43527467, | |
| "1706400000000": "Descanso Semanal", | |
| "1706486400000": "Ok", | |
| "1706572800000": "Ok", | |
| "1706659200000": "Ok", | |
| "1706745600000": "Ok", | |
| "1706832000000": "Ok", | |
| "1706918400000": "Ok" | |
| }, | |
| { | |
| "resourceId": 74393343, | |
| "1706400000000": "Descanso Semanal", | |
| "1706486400000": "Ok", | |
| "1706572800000": "Ok", | |
| "1706659200000": "Ok", | |
| "1706745600000": "Ok", | |
| "1706832000000": "Ok", | |
| "1706918400000": "Ok" | |
| }, | |
| { | |
| "resourceId": 70027135, | |
| "1706400000000": "Descanso Semanal", | |
| "1706486400000": "Ok", | |
| "1706572800000": "Ok", | |
| "1706659200000": "Ok", | |
| "1706745600000": "Ok", | |
| "1706832000000": "Ok", | |
| "1706918400000": "Ok" | |
| } | |
| ] | |
| def adaptar_a_formato_oracle(json_original): | |
| json_adaptado = [] | |
| for item in json_original: | |
| nuevo_item = {"resourceId": item["resourceId"], "workSchedules": []} | |
| for fecha, status in item.items(): | |
| if fecha != "resourceId": | |
| record_type = "Descanso Semanal" if status == "Descanso Semanal" else "Ok" | |
| nuevo_item["workSchedules"].append({ | |
| "recordType": record_type, | |
| "startDate": fecha, | |
| "endDate": fecha # Puedes ajustar esto según tu lógica | |
| }) | |
| json_adaptado.append(nuevo_item) | |
| return json_adaptado | |
| # Ejemplo de uso | |
| json_original = [ | |
| {"resourceId": 44888333, "1706400000000": "Descanso Semanal", "1706486400000": "Ok", "1706572800000": "Ok", "1706659200000": "Ok", "1706745600000": "Ok", "1706832000000": "Ok", "1706918400000": "Ok"}, | |
| # Añade los demás elementos según tu JSON original | |
| ] | |
| json_adaptado = adaptar_a_formato_oracle(json_original) | |
| print(json_adaptado) | |
| from fastapi import FastAPI | |
| from typing import List | |
| app = FastAPI() | |
| def adaptar_a_formato_oracle(item): | |
| nuevo_item = {"resourceId": item["resourceId"], "workSchedules": []} | |
| for fecha, status in item.items(): | |
| if fecha != "resourceId": | |
| record_type = "Descanso Semanal" if status == "Descanso Semanal" else "Ok" | |
| nuevo_item["workSchedules"].append({ | |
| "recordType": record_type, | |
| "startDate": fecha, | |
| "endDate": fecha # Puedes ajustar esto según tu lógica | |
| }) | |
| return nuevo_item | |
| @app.post("/adaptar_a_oracle") | |
| async def adaptar_a_oracle(json_original: List[dict]): | |
| json_adaptado = [adaptar_a_formato_oracle(item) for item in json_original] | |
| return json_adaptado | |
| from fastapi import FastAPI, File, UploadFile | |
| from fastapi.responses import FileResponse | |
| import pandas as pd | |
| import io | |
| from typing import List | |
| app = FastAPI() | |
| def adaptar_a_formato_oracle(item): | |
| nuevo_item = {"resourceId": item["resourceId"], "workSchedules": []} | |
| for fecha, status in item.items(): | |
| if fecha != "resourceId": | |
| record_type = "Descanso Semanal" if status == "Descanso Semanal" else "Ok" | |
| nuevo_item["workSchedules"].append({ | |
| "recordType": record_type, | |
| "startDate": fecha, | |
| "endDate": fecha # Puedes ajustar esto según tu lógica | |
| }) | |
| return nuevo_item | |
| @app.post("/excel_json/") | |
| async def excel_json(file: UploadFile = File(...), sheet_name: str = "Nombre_hoja"): | |
| df = pd.read_excel(io.BytesIO(await file.read()), engine='openpyxl', sheet_name=sheet_name) | |
| # Transformar el formato al deseado para Oracle | |
| json_original = df.to_dict(orient="records") | |
| json_adaptado = [adaptar_a_formato_oracle(item) for item in json_original] | |
| # Guardar el JSON adaptado en un archivo | |
| json_file = "output.json" | |
| with open(json_file, "w") as output_file: | |
| output_file.write(str(json_adaptado)) | |
| # Devolver el archivo JSON adaptado como respuesta | |
| return FileResponse(json_file, media_type='application/json', filename=json_file) |