diff --git a/backend/app/api/api_v1/routers/kintone.py b/backend/app/api/api_v1/routers/kintone.py index 41dd61b..b1c826a 100644 --- a/backend/app/api/api_v1/routers/kintone.py +++ b/backend/app/api/api_v1/routers/kintone.py @@ -156,10 +156,10 @@ def getsettingfromexcel(df): des = df.iloc[2,2] return {"name":appname,"description":des} -def getsettingfromkintone(app:str,c:config.KINTONE_ENV): - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE} +def getsettingfromkintone(app:str,env:config.KINTONE_ENV): + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE} params = {"app":app} - url = f"{c.BASE_URL}{config.API_V1_STR}/app/settings.json" + url = f"{env.BASE_URL}{config.API_V1_STR}/app/settings.json" r = httpx.get(url,headers=headers,params=params) return r.json() @@ -171,24 +171,24 @@ def analysesettings(excel,kintone): updatesettings[key] = excel[key] return updatesettings -def createkintoneapp(name:str,c:config.KINTONE_ENV): - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE,"Content-Type": "application/json"} +def createkintoneapp(name:str,env:config.KINTONE_ENV): + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE,"Content-Type": "application/json"} data = {"name":name} - url = f"{c.BASE_URL}{config.API_V1_STR}/preview/app.json" + url = f"{env.BASE_URL}{config.API_V1_STR}/preview/app.json" r = httpx.post(url,headers=headers,data=json.dumps(data)) return r.json() -def updateappsettingstokintone(app:str,updates:dict,c:config.KINTONE_ENV): - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE,"Content-Type": "application/json"} - url = f"{c.BASE_URL}{config.API_V1_STR}/preview/app/settings.json" +def updateappsettingstokintone(app:str,updates:dict,env:config.KINTONE_ENV): + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE,"Content-Type": "application/json"} + url = f"{env.BASE_URL}{config.API_V1_STR}/preview/app/settings.json" data = {"app":app} data.update(updates) r = httpx.put(url,headers=headers,data=json.dumps(data)) return r.json() -def addfieldstokintone(app:str,fields:dict,c:config.KINTONE_ENV,revision:str = None): - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE,"Content-Type": "application/json"} - url = f"{c.BASE_URL}{config.API_V1_STR}/preview/app/form/fields.json" +def addfieldstokintone(app:str,fields:dict,env:config.KINTONE_ENV,revision:str = None): + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE,"Content-Type": "application/json"} + url = f"{env.BASE_URL}{config.API_V1_STR}/preview/app/form/fields.json" if revision != None: data = {"app":app,"revision":revision,"properties":fields} else: @@ -197,43 +197,43 @@ def addfieldstokintone(app:str,fields:dict,c:config.KINTONE_ENV,revision:str = N r.raise_for_status() return r.json() -def updatefieldstokintone(app:str,revision:str,fields:dict,c:config.KINTONE_ENV): - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE,"Content-Type": "application/json"} - url = f"{c.BASE_URL}{config.API_V1_STR}/preview/app/form/fields.json" +def updatefieldstokintone(app:str,revision:str,fields:dict,env:config.KINTONE_ENV): + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE,"Content-Type": "application/json"} + url = f"{env.BASE_URL}{config.API_V1_STR}/preview/app/form/fields.json" data = {"app":app,"properties":fields} r = httpx.put(url,headers=headers,data=json.dumps(data)) return r.json() -def deletefieldsfromkintone(app:str,revision:str,fields:dict,c:config.KINTONE_ENV): - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE,"Content-Type": "application/json"} - url = f"{c.BASE_URL}{config.API_V1_STR}/preview/app/form/fields.json" +def deletefieldsfromkintone(app:str,revision:str,fields:dict,env:config.KINTONE_ENV): + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE,"Content-Type": "application/json"} + url = f"{env.BASE_URL}{config.API_V1_STR}/preview/app/form/fields.json" params = {"app":app,"revision":revision,"fields":fields} #r = httpx.delete(url,headers=headers,content=json.dumps(params)) r = httpx.request(method="DELETE",url=url,headers=headers,content=json.dumps(params)) return r.json() -def deoployappfromkintone(app:str,revision:str,c:config.KINTONE_ENV): - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE,"Content-Type": "application/json"} - url = f"{c.BASE_URL}{config.API_V1_STR}/preview/app/deploy.json" +def deoployappfromkintone(app:str,revision:str,env:config.KINTONE_ENV): + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE,"Content-Type": "application/json"} + url = f"{env.BASE_URL}{config.API_V1_STR}/preview/app/deploy.json" data = {"apps":[{"app":app,"revision":revision}],"revert": False} r = httpx.post(url,headers=headers,data=json.dumps(data)) return r.json # 既定項目に含めるアプリのフィールドのみ取得する # スペース、枠線、ラベルを含まない -def getfieldsfromkintone(app:str,c:config.KINTONE_ENV): - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE} +def getfieldsfromkintone(app:str,env:config.KINTONE_ENV): + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE} params = {"app":app} - url = f"{c.BASE_URL}{config.API_V1_STR}/app/form/fields.json" + url = f"{env.BASE_URL}{config.API_V1_STR}/app/form/fields.json" r = httpx.get(url,headers=headers,params=params) return r.json() # フォームに配置するフィールドのみ取得する # スペース、枠線、ラベルも含める -def getformfromkintone(app:str,c:config.KINTONE_ENV): - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE} +def getformfromkintone(app:str,env:config.KINTONE_ENV): + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE} params = {"app":app} - url = f"{c.BASE_URL}{config.API_V1_STR}/form.json" + url = f"{env.BASE_URL}{config.API_V1_STR}/form.json" r = httpx.get(url,headers=headers,params=params) return r.json() @@ -286,10 +286,10 @@ def analysefields(excel,kintone): return {"update":updatefields,"add":addfields,"del":delfields} -def getprocessfromkintone(app:str,c:config.KINTONE_ENV): - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE} +def getprocessfromkintone(app:str,env:config.KINTONE_ENV): + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE} params = {"app":app} - url = f"{c.BASE_URL}{config.API_V1_STR}/app/status.json" + url = f"{env.BASE_URL}{config.API_V1_STR}/app/status.json" r = httpx.get(url,headers=headers,params=params) return r.json() @@ -374,24 +374,24 @@ def getkintoneorgs(c:config.KINTONE_ENV): r = httpx.get(url,headers=headers,params=params) return r.json() -def uploadkintonefiles(file,c:config.KINTONE_ENV): +def uploadkintonefiles(file,env:config.KINTONE_ENV): if (file.endswith('alc_runtime.js') and config.DEPLOY_MODE == "DEV"): return {'fileKey':file} upload_files = {'file': open(file,'rb')} - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE} + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE} data ={'name':'file','filename':os.path.basename(file)} - url = f"{c.BASE_URL}/k/v1/file.json" + url = f"{env.BASE_URL}/k/v1/file.json" r = httpx.post(url,headers=headers,data=data,files=upload_files) #{"name":data['filename'],'fileKey':r['fileKey']} return r.json() -def updateappjscss(app,uploads,c:config.KINTONE_ENV): +def updateappjscss(app,uploads,env:config.KINTONE_ENV): dsjs = [] dscss = [] #mobile側 mbjs = [] mbcss = [] - customize = getappcustomize(app, c) + customize = getappcustomize(app, env) current_js = customize['desktop'].get('js', []) current_css = customize['desktop'].get('css', []) current_mobile_js = customize['mobile'].get('js', []) @@ -430,16 +430,16 @@ def updateappjscss(app,uploads,c:config.KINTONE_ENV): ds ={'js':dsjs,'css':dscss} mb ={'js':mbjs,'css':mbcss} data = {'app':app,'scope':'ALL','desktop':ds,'mobile':mb,'revision':customize["revision"]} - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE,"Content-Type": "application/json"} - url = f"{c.BASE_URL}{config.API_V1_STR}/preview/app/customize.json" + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE,"Content-Type": "application/json"} + url = f"{env.BASE_URL}{config.API_V1_STR}/preview/app/customize.json" print(json.dumps(data)) r = httpx.put(url,headers=headers,data=json.dumps(data)) return r.json() #kintone カスタマイズ情報 -def getappcustomize(app,c:config.KINTONE_ENV): - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE} - url = f"{c.BASE_URL}{config.API_V1_STR}/preview/app/customize.json" +def getappcustomize(app,env:config.KINTONE_ENV): + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE} + url = f"{env.BASE_URL}{config.API_V1_STR}/preview/app/customize.json" params = {"app":app} r = httpx.get(url,headers=headers,params=params) return r.json() @@ -451,9 +451,9 @@ def getTempPath(filename): fpath = os.path.join(rootdir,"Temp",filename) return fpath -def createappjs(domainid,app): +def createappjs(domain_url,app): db = SessionLocal() - flows = get_flows_by_app(db,domainid,app) + flows = get_flows_by_app(db,domain_url,app) db.close() content={} for flow in flows: @@ -521,7 +521,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(request:Request,app:str,files:t.List[UploadFile] = File(...),env = Depends(getkintoneenv)): +async def jscss(request:Request,app:str,files:t.List[UploadFile] = File(...),env:config.KINTONE_ENV = Depends(getkintoneenv)): try: jscs=[] for file in files: @@ -542,21 +542,21 @@ async def jscss(request:Request,app:str,files:t.List[UploadFile] = File(...),env raise APIException('kintone:updatejscss',request.url._url, f"Error occurred while update js/css {file.filename} is not an Excel file",e) @r.get("/app") -async def app(request:Request,app:str,c:config.KINTONE_ENV=Depends(getkintoneenv)): +async def app(request:Request,app:str,env: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" + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE} + url = f"{env.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, f"Error occurred while get app({c.DOMAIN_NAME}->{app}):",e) + raise APIException('kintone:app',request.url._url, f"Error occurred while get app({env.DOMAIN_NAME}->{app}):",e) @r.get("/allapps") -async def allapps(request:Request,c:config.KINTONE_ENV=Depends(getkintoneenv)): +async def allapps(request:Request,env: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" + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE} + url = f"{env.BASE_URL}{config.API_V1_STR}/apps.json" offset = 0 limit = 100 all_apps = [] @@ -572,17 +572,17 @@ async def allapps(request:Request,c:config.KINTONE_ENV=Depends(getkintoneenv)): return {"apps": all_apps} except Exception as e: - raise APIException('kintone:allapps', request.url._url, f"Error occurred while get allapps({c.DOMAIN_NAME}):", e) + raise APIException('kintone:allapps', request.url._url, f"Error occurred while get allapps({env.DOMAIN_NAME}):", e) @r.get("/appfields") -async def appfields(request:Request,app:str,env = Depends(getkintoneenv)): +async def appfields(request:Request,app:str,env:config.KINTONE_ENV = Depends(getkintoneenv)): try: return getfieldsfromkintone(app,env) except Exception as e: raise APIException('kintone:appfields',request.url._url, f"Error occurred while get app fileds({env.DOMAIN_NAME}->{app}):",e) @r.get("/allfields") -async def allfields(request:Request,app:str,env = Depends(getkintoneenv)): +async def allfields(request:Request,app:str,env:config.KINTONE_ENV = Depends(getkintoneenv)): try: field_resp = getfieldsfromkintone(app,env) form_resp = getformfromkintone(app,env) @@ -591,38 +591,38 @@ async def allfields(request:Request,app:str,env = Depends(getkintoneenv)): raise APIException('kintone:allfields',request.url._url, f"Error occurred while get form fileds({env.DOMAIN_NAME}->{app}):",e) @r.get("/appprocess") -async def appprocess(request:Request,app:str,env = Depends(getkintoneenv)): +async def appprocess(request:Request,app:str,env:config.KINTONE_ENV = Depends(getkintoneenv)): try: return getprocessfromkintone(app,env) except Exception as e: raise APIException('kintone:appprocess',request.url._url, f"Error occurred while get app process({env.DOMAIN_NAME}->{app}):",e) @r.get("/alljscss") -async def alljscs(request:Request,app:str,c:config.KINTONE_ENV=Depends(getkintoneenv)): +async def alljscs(request:Request,app:str,env: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" + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE} + url = f"{env.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, f"Error occurred while get app js/css({c.DOMAIN_NAME}->{app}):",e) + raise APIException('kintone:alljscss',request.url._url, f"Error occurred while get app js/css({env.DOMAIN_NAME}->{app}):",e) @r.post("/createapp",) -async def createapp(request:Request,name:str,c:config.KINTONE_ENV=Depends(getkintoneenv)): +async def createapp(request:Request,name:str,env:config.KINTONE_ENV=Depends(getkintoneenv)): try: - headers={config.API_V1_AUTH_KEY:c.API_V1_AUTH_VALUE,"Content-Type": "application/json"} + headers={config.API_V1_AUTH_KEY:env.API_V1_AUTH_VALUE,"Content-Type": "application/json"} data = {"name":name} - url = f"{c.BASE_URL}{config.API_V1_STR}/preview/app.json" + url = f"{env.BASE_URL}{config.API_V1_STR}/preview/app.json" r = httpx.post(url,headers=headers,data=json.dumps(data)) result = r.json() if result.get("app") != None: - url = f"{c.BASE_URL}{config.API_V1_STR}/preview/app/deploy.json" + url = f"{env.BASE_URL}{config.API_V1_STR}/preview/app/deploy.json" 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, f"Error occurred while create app({c.DOMAIN_NAME}->{name}):",e) + raise APIException('kintone:createapp',request.url._url, f"Error occurred while create app({env.DOMAIN_NAME}->{name}):",e) @r.post("/createappfromexcel",) @@ -761,7 +761,7 @@ async def createjstokintone(request:Request,app:str,env:config.KINTONE_ENV = Dep try: jscs=[] files=[] - files.append(createappjs(env.DOMAIN_ID, app)) + files.append(createappjs(env.BASE_URL, app)) files.append(getTempPath('alc_runtime.js')) files.append(getTempPath('alc_runtime.css')) for file in files: diff --git a/backend/app/api/api_v1/routers/platform.py b/backend/app/api/api_v1/routers/platform.py index 6be8b66..06348b5 100644 --- a/backend/app/api/api_v1/routers/platform.py +++ b/backend/app/api/api_v1/routers/platform.py @@ -228,12 +228,14 @@ async def flow_create( ) async def flow_edit( request: Request, + flowid: str, flow: FlowIn, user=Depends(get_current_active_user), db=Depends(get_db), ): try: - return edit_flow(db, flow,user.id) + domain = get_activedomain(db, user.id) + return edit_flow(db,domain.url, flow,user.id) except Exception as e: raise APIException('platform:flow',request.url._url,f"Error occurred while edit flow:",e) diff --git a/backend/app/db/crud.py b/backend/app/db/crud.py index 7e4f0f8..18ca4d7 100644 --- a/backend/app/db/crud.py +++ b/backend/app/db/crud.py @@ -239,14 +239,16 @@ def delete_flow(db: Session, flowid: str): def edit_flow( - db: Session, flow: schemas.FlowIn,userid:int + db: Session, domainurl: str, flow: schemas.FlowIn,userid:int ) -> schemas.Flow: db_flow = get_flow(db, flow.flowid) if not db_flow: - raise HTTPException(status.HTTP_404_NOT_FOUND, detail="Flow not found") + #見つからない時新規作成 + return create_flow(db,domainurl,flow,userid) + db_flow.appid =flow.appid, db_flow.eventid=flow.eventid, - db_flow.domainurl=flow.domainurl, + db_flow.domainurl=domainurl, db_flow.name=flow.name, db_flow.content=flow.content, db_flow.updateuserid = userid, @@ -266,8 +268,8 @@ def get_flows(db: Session, flowid: str): def get_flow(db: Session, flowid: str): flow = db.query(models.Flow).filter(models.Flow.flowid == flowid).first() - if not flow: - raise HTTPException(status_code=404, detail="Data not found") + # if not flow: + # raise HTTPException(status_code=404, detail="Data not found") return flow def get_flows_by_app(db: Session,domainurl: str, appid: str): diff --git a/backend/app/db/schemas.py b/backend/app/db/schemas.py index dd303d0..583c210 100644 --- a/backend/app/db/schemas.py +++ b/backend/app/db/schemas.py @@ -67,6 +67,7 @@ class AppList(Base): domainurl: str appname: str appid:str + updateuser: UserOut version:int class AppVersion(BaseModel): @@ -75,6 +76,7 @@ class AppVersion(BaseModel): versionname: str comment:str appid:str + class TokenData(BaseModel): id:int = 0 @@ -122,7 +124,7 @@ class Action(BaseModel): class FlowIn(BaseModel): flowid: str - domainurl:str + # domainurl:str appid: str appname:str eventid: str diff --git a/frontend/src/components/DomainSelector.vue b/frontend/src/components/DomainSelector.vue index c5747a6..2fb7c60 100644 --- a/frontend/src/components/DomainSelector.vue +++ b/frontend/src/components/DomainSelector.vue @@ -1,12 +1,15 @@ diff --git a/frontend/src/pages/FlowChart.vue b/frontend/src/pages/FlowChart.vue index 506107d..2c0d150 100644 --- a/frontend/src/pages/FlowChart.vue +++ b/frontend/src/pages/FlowChart.vue @@ -3,11 +3,7 @@
-
- -
- -
+
@@ -42,8 +38,24 @@
+ + + + + +
- +