This commit is contained in:
2023-11-21 21:22:47 +09:00
3 changed files with 177 additions and 94 deletions

View File

@@ -302,12 +302,15 @@ async def test(file:UploadFile= File(...),app:str=None):
@r.post("/download",)
async def download(key,c:config.KINTONE_ENV=Depends(getkintoneenv)):
async def download(request:Request,key,c:config.KINTONE_ENV=Depends(getkintoneenv)):
try:
headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE}
params = {"fileKey":key}
url = f"{c.BASE_URL}/k/v1/file.json"
r = httpx.get(url,headers=headers,params=params)
return r.json()
except Exception as e:
raise APIException('kintone:upload',request.url._url,f"Error occurred while download file.json: {str(e)}")
@r.post("/upload")
async def upload(request:Request,files:t.List[UploadFile] = File(...)):
@@ -327,7 +330,7 @@ async def upload(request:Request,files:t.List[UploadFile] = File(...)):
return {"files": [file.filename for file in files]}
@r.post("/updatejscss")
async def jscss(app:str,files:t.List[UploadFile] = File(...),env = Depends(getkintoneenv)):
async def jscss(request:Request,app:str,files:t.List[UploadFile] = File(...),env = Depends(getkintoneenv)):
try:
jscs=[]
for file in files:
@@ -345,41 +348,57 @@ async def jscss(app:str,files:t.List[UploadFile] = File(...),env = Depends(getki
deoployappfromkintone(app,appjscs["revision"],env)
return appjscs
except Exception as e:
raise HTTPException(status_code=400, detail=f"Error occurred while update file {file.filename}: {str(e)}")
raise APIException('kintone:updatejscss',request.url._url, detail=f"Error occurred while update js/css {file.filename} is not an Excel file")
@r.get("/app")
async def app(app:str,c:config.KINTONE_ENV=Depends(getkintoneenv)):
async def app(request:Request,app:str,c:config.KINTONE_ENV=Depends(getkintoneenv)):
try:
headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE}
url = f"{c.BASE_URL}{config.API_V1_STR}/app.json"
params ={"id":app}
r = httpx.get(url,headers=headers,params=params)
return r.json()
except Exception as e:
raise APIException('kintone:app',request.url._url, detail=f"Error occurred while get app({c.DOMAIN_NAM}->{app}) : {str(e)}")
@r.get("/allapps")
async def allapps(c:config.KINTONE_ENV=Depends(getkintoneenv)):
async def allapps(request:Request,c:config.KINTONE_ENV=Depends(getkintoneenv)):
try:
headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE}
url = f"{c.BASE_URL}{config.API_V1_STR}/apps.json"
r = httpx.get(url,headers=headers)
return r.json()
except Exception as e:
raise APIException('kintone:allapps',request.url._url, detail=f"Error occurred while get allapps({c.DOMAIN_NAM}) : {str(e)}")
@r.get("/appfields")
async def appfields(app:str,env = Depends(getkintoneenv)):
async def appfields(request:Request,app:str,env = Depends(getkintoneenv)):
try:
return getfieldsfromkintone(app,env)
except Exception as e:
raise APIException('kintone:appfields',request.url._url, detail=f"Error occurred while get app fileds({env.DOMAIN_NAM}->{app}) : {str(e)}")
@r.get("/appprocess")
async def appprocess(app:str,env = Depends(getkintoneenv)):
async def appprocess(request:Request,app:str,env = Depends(getkintoneenv)):
try:
return getprocessfromkintone(app,env)
except Exception as e:
raise APIException('kintone:appprocess',request.url._url, detail=f"Error occurred while get app process({env.DOMAIN_NAM}->{app}) : {str(e)}")
@r.get("/alljscss")
async def alljscs(app:str,c:config.KINTONE_ENV=Depends(getkintoneenv)):
async def alljscs(request:Request,app:str,c:config.KINTONE_ENV=Depends(getkintoneenv)):
try:
headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE}
url = f"{c.BASE_URL}{config.API_V1_STR}/app/customize.json"
params = {"app":app}
r = httpx.get(url,headers=headers,params=params)
return r.json()
except Exception as e:
raise APIException('kintone:alljscss',request.url._url, detail=f"Error occurred while get app js/css({c.DOMAIN_NAM}->{app}) : {str(e)}")
@r.post("/createapp",)
async def createapp(name:str,c:config.KINTONE_ENV=Depends(getkintoneenv)):
async def createapp(request:Request,name:str,c:config.KINTONE_ENV=Depends(getkintoneenv)):
try:
headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE,"Content-Type": "application/json"}
data = {"name":name}
url = f"{c.BASE_URL}{config.API_V1_STR}/preview/app.json"
@@ -390,11 +409,13 @@ async def createapp(name:str,c:config.KINTONE_ENV=Depends(getkintoneenv)):
data = {"apps":[result],"revert": False}
r = httpx.post(url,headers=headers,data=json.dumps(data))
return r.json
except Exception as e:
raise APIException('kintone:createapp',request.url._url, detail=f"Error occurred while create app({c.DOMAIN_NAM}->{name}) : {str(e)}")
property=["label","code","type","required","defaultValue","options"]
@r.post("/createappfromexcel",)
async def createappfromexcel(files:t.List[UploadFile] = File(...),env = Depends(getkintoneenv)):
async def createappfromexcel(request:Request,files:t.List[UploadFile] = File(...),env = Depends(getkintoneenv)):
for file in files:
if file.filename.endswith('.xlsx'):
try:
@@ -421,14 +442,14 @@ async def createappfromexcel(files:t.List[UploadFile] = File(...),env = Depends(
result["revision"] = app["revision"]
deoployappfromkintone(result["app"],result["revision"],env)
except Exception as e:
raise HTTPException(status_code=400, detail=f"Error occurred while parsing file {file.filename}: {str(e)}")
raise APIException('kintone:createappfromexcel',request.url._url, detail=f"Error occurred while parsing file ({env.DOMAIN_NAM}->{file.filename}) : {str(e)}")
else:
raise HTTPException(status_code=400, detail=f"File {file.filename} is not an Excel file")
raise APIException('kintone:createappfromexcel',request.url._url, detail=f"File {file.filename} is not an Excel file")
return result
@r.post("/updateappfromexcel")
async def updateappfromexcel(app:str,files:t.List[UploadFile] = File(...),env = Depends(getkintoneenv)):
async def updateappfromexcel(request:Request,app:str,files:t.List[UploadFile] = File(...),env = Depends(getkintoneenv)):
for file in files:
if file.filename.endswith('.xlsx'):
try:
@@ -472,14 +493,13 @@ async def updateappfromexcel(app:str,files:t.List[UploadFile] = File(...),env =
if deploy:
result = deoployappfromkintone(app,revision,env)
except Exception as e:
raise HTTPException(status_code=400, detail=f"Error occurred while parsing file {file.filename}: {str(e)}")
raise APIException('kintone:updateappfromexcel',request.url._url, detail=f"Error occurred while parsing file ({env.DOMAIN_NAM}->{file.filename}) : {str(e)}")
else:
raise HTTPException(status_code=400, detail=f"File {file.filename} is not an Excel file")
raise APIException('kintone:updateappfromexcel',request.url._url, detail=f"File {file.filename} is not an Excel file")
return result
@r.post("/updateprocessfromexcel",)
async def updateprocessfromexcel(app:str,env = Depends(getkintoneenv)):
async def updateprocessfromexcel(request:Request,app:str,env = Depends(getkintoneenv)):
try:
excel = getprocessfromexcel()
@@ -510,14 +530,13 @@ async def updateprocessfromexcel(app:str,env = Depends(getkintoneenv)):
if deploy:
result = deoployappfromkintone(app,revision,env)
except Exception as e:
raise HTTPException(status_code=400, detail=f"Error occurred : {str(e)}")
raise APIException('kintone:updateprocessfromexcel',request.url._url, detail=f"Error occurred while update process ({env.DOMAIN_NAM}->{app}) : {str(e)}")
return result
@r.post("/createjstokintone",)
async def createjstokintone(app:str,env:config.KINTONE_ENV = Depends(getkintoneenv)):
async def createjstokintone(request:Request,app:str,env:config.KINTONE_ENV = Depends(getkintoneenv)):
try:
jscs=[]
files=[]
@@ -532,5 +551,4 @@ async def createjstokintone(app:str,env:config.KINTONE_ENV = Depends(getkintonee
deoployappfromkintone(app,appjscs["revision"],env)
return appjscs
except Exception as e:
print(str(e))
raise HTTPException(status_code=400, detail=f"Error occurred : {str(e)}")
raise APIException('kintone:createjstokintone',request.url._url, detail=f"Error occurred while create js ({env.DOMAIN_NAM}->{app}) : {str(e)}")

View File

@@ -5,6 +5,7 @@ from app.db.crud import *
from app.db.schemas import *
from typing import List
from app.core.auth import get_current_active_user,get_current_user
from app.core.apiexception import APIException
platform_router = r = APIRouter()
@@ -18,9 +19,11 @@ async def appsetting_details(
id: int,
db=Depends(get_db),
):
try:
app = get_appsetting(db, id)
return app
except Exception as e:
raise APIException('platform:appsettings',request.url._url,f"Error occurred while get app setting: {str(e)}")
@r.post("/appsettings", response_model=App, response_model_exclude_none=True)
async def appsetting_create(
@@ -28,7 +31,10 @@ async def appsetting_create(
app: AppBase,
db=Depends(get_db),
):
try:
return create_appsetting(db, app)
except Exception as e:
raise APIException('platform:appsettings',request.url._url,f"Error occurred while get create app setting: {str(e)}")
@r.put(
@@ -40,7 +46,10 @@ async def appsetting_edit(
app: AppEdit,
db=Depends(get_db),
):
try:
return edit_appsetting(db, id, app)
except Exception as e:
raise APIException('platform:appsettings',request.url._url,f"Error occurred while edit app setting: {str(e)}")
@r.delete(
@@ -51,8 +60,10 @@ async def appsettings_delete(
id: int,
db=Depends(get_db),
):
try:
return delete_appsetting(db, id)
except Exception as e:
raise APIException('platform:appsettings',request.url._url,f"Error occurred while delete app setting: {str(e)}")
@r.get(
@@ -65,8 +76,11 @@ async def kintone_data(
type: int,
db=Depends(get_db),
):
try:
kintone = get_kintones(db, type)
return kintone
except Exception as e:
raise APIException('platform:kintone',request.url._url,f"Error occurred while get kintone env: {str(e)}")
@r.get(
"/actions",
@@ -78,8 +92,11 @@ async def action_data(
request: Request,
db=Depends(get_db),
):
try:
actions = get_actions(db)
return actions
except Exception as e:
raise APIException('platform:actions',request.url._url,f"Error occurred while get actions: {str(e)}")
@r.get(
"/flow/{flowid}",
@@ -91,8 +108,11 @@ async def flow_details(
flowid: str,
db=Depends(get_db),
):
try:
app = get_flow(db, flowid)
return app
except Exception as e:
raise APIException('platform:flow',request.url._url,f"Error occurred while get flow by flowid: {str(e)}")
@r.get(
@@ -106,10 +126,13 @@ async def flow_list(
user=Depends(get_current_user),
db=Depends(get_db),
):
try:
domain = get_activedomain(db, user.id)
print("domain=>",domain)
flows = get_flows_by_app(db, domain.id, appid)
return flows
except Exception as e:
raise APIException('platform:flow',request.url._url,f"Error occurred while get flow by appid: {str(e)}")
@r.post("/flow", response_model=Flow, response_model_exclude_none=True)
@@ -119,8 +142,11 @@ async def flow_create(
user=Depends(get_current_user),
db=Depends(get_db),
):
try:
domain = get_activedomain(db, user.id)
return create_flow(db, domain.id, flow)
except Exception as e:
raise APIException('platform:flow',request.url._url,f"Error occurred while create flow: {str(e)}")
@r.put(
@@ -131,7 +157,10 @@ async def flow_edit(
flow: FlowBase,
db=Depends(get_db),
):
try:
return edit_flow(db, flow)
except Exception as e:
raise APIException('platform:flow',request.url._url,f"Error occurred while edit flow: {str(e)}")
@r.delete(
@@ -142,8 +171,10 @@ async def flow_delete(
flowid: str,
db=Depends(get_db),
):
try:
return delete_flow(db, flowid)
except Exception as e:
raise APIException('platform:flow',request.url._url,f"Error occurred while delete flow: {str(e)}")
@r.get(
"/domains/{tenantid}",
@@ -155,8 +186,11 @@ async def domain_details(
tenantid:str,
db=Depends(get_db),
):
try:
domains = get_domains(db,tenantid)
return domains
except Exception as e:
raise APIException('platform:domains',request.url._url,f"Error occurred while get domains: {str(e)}")
@r.post("/domain", response_model=Domain, response_model_exclude_none=True)
async def domain_create(
@@ -164,7 +198,10 @@ async def domain_create(
domain: DomainBase,
db=Depends(get_db),
):
try:
return create_domain(db, domain)
except Exception as e:
raise APIException('platform:domain',request.url._url,f"Error occurred while create domain: {str(e)}")
@r.put(
@@ -175,7 +212,10 @@ async def domain_edit(
domain: DomainBase,
db=Depends(get_db),
):
try:
return edit_domain(db, domain)
except Exception as e:
raise APIException('platform:domain',request.url._url,f"Error occurred while edit domain: {str(e)}")
@r.delete(
@@ -186,8 +226,10 @@ async def domain_delete(
id: int,
db=Depends(get_db),
):
try:
return delete_domain(db,id)
except Exception as e:
raise APIException('platform:domain',request.url._url,f"Error occurred while delete domain: {str(e)}")
@r.get(
"/domain",
@@ -199,8 +241,11 @@ async def userdomain_details(
user=Depends(get_current_user),
db=Depends(get_db),
):
try:
domains = get_domain(db, user.id)
return domains
except Exception as e:
raise APIException('platform:domain',request.url._url,f"Error occurred while get user({user.id}) domain: {str(e)}")
@r.post(
"/domain/{userid}",
@@ -212,8 +257,11 @@ async def create_userdomain(
domainids:list,
db=Depends(get_db),
):
try:
domain = add_userdomain(db, userid,domainids)
return domain
except Exception as e:
raise APIException('platform:domain',request.url._url,f"Error occurred while add user({userid}) domain: {str(e)}")
@r.delete(
"/domain/{domainid}/{userid}", response_model_exclude_none=True
@@ -224,7 +272,10 @@ async def userdomain_delete(
userid: int,
db=Depends(get_db),
):
try:
return delete_userdomain(db, userid,domainid)
except Exception as e:
raise APIException('platform:delete',request.url._url,f"Error occurred while delete user({userid}) domain: {str(e)}")
@r.get(
@@ -237,8 +288,11 @@ async def get_useractivedomain(
user=Depends(get_current_user),
db=Depends(get_db),
):
try:
domain = get_activedomain(db, user.id)
return domain
except Exception as e:
raise APIException('platform:activedomain',request.url._url,f"Error occurred while get user({user.id}) activedomain: {str(e)}")
@r.put(
"/activedomain/{domainid}",
@@ -250,9 +304,11 @@ async def update_activeuserdomain(
user=Depends(get_current_user),
db=Depends(get_db),
):
try:
domain = active_userdomain(db, user.id,domainid)
return domain
except Exception as e:
raise APIException('platform:activedomain',request.url._url,f"Error occurred while update user({user.id}) activedomain: {str(e)}")
@r.get(
"/events",
@@ -264,8 +320,11 @@ async def event_data(
request: Request,
db=Depends(get_db),
):
try:
events = get_events(db)
return events
except Exception as e:
raise APIException('platform:events',request.url._url,f"Error occurred while get events: {str(e)}")
@r.get(
@@ -279,5 +338,8 @@ async def eventactions_data(
eventid: str,
db=Depends(get_db),
):
try:
actions = get_eventactions(db,eventid)
return actions
except Exception as e:
raise APIException('platform:eventactions',request.url._url,f"Error occurred while get eventactions: {str(e)}")

View File

@@ -26,7 +26,10 @@ class KINTONE_ENV:
DOMAIN_ID = ""
DOMAIN_NAME =""
def __init__(self,domain) -> None:
self.DOMAIN_NAME=domain.name
self.DOMAIN_ID=domain.id
self.BASE_URL = domain.url
self.KINTONE_USER = domain.kintoneuser