From 081be5f35b621c4e924c62ffbbad1c0414664558 Mon Sep 17 00:00:00 2001 From: "maxiaozhe@alicorns.co.jp" Date: Mon, 10 Jul 2023 13:13:43 +0900 Subject: [PATCH] Kintone app build backend created --- backend/Temp/日報設計書.xlsx | Bin 0 -> 11254 bytes backend/app/api/api_v1/routers/kintone.py | 23 +++++++++++++ backend/app/main.py | 39 +++++++++++----------- backend/requirements.txt | 6 ++-- frontend/.env | 2 +- 5 files changed, 48 insertions(+), 22 deletions(-) create mode 100644 backend/Temp/日報設計書.xlsx create mode 100644 backend/app/api/api_v1/routers/kintone.py diff --git a/backend/Temp/日報設計書.xlsx b/backend/Temp/日報設計書.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1ea901f6c0731eebd1ce1d0801aac0d5a80f8d66 GIT binary patch literal 11254 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 I(*L^pfAXBjga7~l literal 0 HcmV?d00001 diff --git a/backend/app/api/api_v1/routers/kintone.py b/backend/app/api/api_v1/routers/kintone.py new file mode 100644 index 0000000..75d5634 --- /dev/null +++ b/backend/app/api/api_v1/routers/kintone.py @@ -0,0 +1,23 @@ +from fastapi import APIRouter, UploadFile,HTTPException,File +from io import BytesIO +import typing as t +import pandas as pd + + +kinton_router = r = APIRouter() + + +@r.post("/upload",) +async def upload(files:t.List[UploadFile] = File(...)): + dataframes = [] + for file in files: + if file.filename.endswith('.xlsx'): + try: + content = await file.read() + df = pd.read_excel(BytesIO(content)) + dataframes.append(df) + except Exception as e: + raise HTTPException(status_code=400, detail=f"Error occurred while parsing file {file.filename}: {str(e)}") + else: + raise HTTPException(status_code=400, detail=f"File {file.filename} is not an Excel file") + return {"files": [file.filename for file in files]} diff --git a/backend/app/main.py b/backend/app/main.py index b3f1c58..981e64b 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -1,12 +1,12 @@ from fastapi import FastAPI, Depends from starlette.requests import Request import uvicorn - -from app.api.api_v1.routers.users import users_router -from app.api.api_v1.routers.auth import auth_router +from app.api.api_v1.routers.kintone import kinton_router +# from app.api.api_v1.routers.users import users_router +# from app.api.api_v1.routers.auth import auth_router from app.core import config -from app.db.session import SessionLocal -from app.core.auth import get_current_active_user +# from app.db.session import SessionLocal +# from app.core.auth import get_current_active_user from app.core.celery_app import celery_app from app import tasks @@ -16,17 +16,17 @@ app = FastAPI( ) -@app.middleware("http") -async def db_session_middleware(request: Request, call_next): - request.state.db = SessionLocal() - response = await call_next(request) - request.state.db.close() - return response +# @app.middleware("http") +# async def db_session_middleware(request: Request, call_next): +# request.state.db = SessionLocal() +# response = await call_next(request) +# request.state.db.close() +# return response @app.get("/api/v1") async def root(): - return {"message": "Hello World"} + return {"message": "success"} @app.get("/api/v1/task") @@ -37,13 +37,14 @@ async def example_task(): # Routers -app.include_router( - users_router, - prefix="/api/v1", - tags=["users"], - dependencies=[Depends(get_current_active_user)], -) -app.include_router(auth_router, prefix="/api", tags=["auth"]) +# app.include_router( +# users_router, +# prefix="/api/v1", +# tags=["users"], +# dependencies=[Depends(get_current_active_user)], +# ) +# app.include_router(auth_router, prefix="/api", tags=["auth"]) +app.include_router(kinton_router,prefix="/api/v1") if __name__ == "__main__": uvicorn.run("main:app", host="0.0.0.0", reload=True, port=8888) diff --git a/backend/requirements.txt b/backend/requirements.txt index 20d37dd..5800630 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -7,7 +7,7 @@ httpx==0.15.5 ipython==7.31.1 itsdangerous==1.1.0 Jinja2==2.11.3 -psycopg2 +#psycopg2 pytest==6.1.0 requests==2.24.0 SQLAlchemy==1.3.19 @@ -16,4 +16,6 @@ passlib==1.7.2 bcrypt==3.2.0 sqlalchemy-utils==0.36.8 python-multipart==0.0.5 -pyjwt==1.7.1 \ No newline at end of file +pyjwt==1.7.1 +pandas==2.0.3 +openpyxl==3.1.2 \ No newline at end of file diff --git a/frontend/.env b/frontend/.env index 3e40af3..00485e5 100644 --- a/frontend/.env +++ b/frontend/.env @@ -1,2 +1,2 @@ -KAB_BACKEND_URL="http://localhost:8000/api/" +KAB_BACKEND_URL="http://127.0.0.1:8000/api/v1/upload"