test / calendario api
JairoDanielMT's picture
Update calendario api
241cc7e verified
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)