| | from server import PromptServer |
| | from aiohttp import web |
| | import os |
| | import inspect |
| | import json |
| | import importlib |
| | import sys |
| | sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) |
| | import pysssss |
| |
|
| | root_directory = os.path.dirname(inspect.getfile(PromptServer)) |
| | workflows_directory = os.path.join(root_directory, "pysssss-workflows") |
| | workflows_directory = pysssss.get_config_value( |
| | "workflows.directory", workflows_directory) |
| |
|
| | NODE_CLASS_MAPPINGS = {} |
| | NODE_DISPLAY_NAME_MAPPINGS = {} |
| |
|
| |
|
| | @PromptServer.instance.routes.get("/pysssss/workflows") |
| | async def get_workflows(request): |
| | files = [] |
| | for dirpath, directories, file in os.walk(workflows_directory): |
| | for file in file: |
| | if (file.endswith(".json")): |
| | files.append(os.path.relpath(os.path.join( |
| | dirpath, file), workflows_directory)) |
| | return web.json_response(list(map(lambda f: os.path.splitext(f)[0].replace("\\", "/"), files))) |
| |
|
| |
|
| | @PromptServer.instance.routes.get("/pysssss/workflows/{name:.+}") |
| | async def get_workflow(request): |
| | file = os.path.abspath(os.path.join( |
| | workflows_directory, request.match_info["name"] + ".json")) |
| | if os.path.commonpath([file, workflows_directory]) != workflows_directory: |
| | return web.Response(status=403) |
| |
|
| | return web.FileResponse(file) |
| |
|
| |
|
| | @PromptServer.instance.routes.post("/pysssss/workflows") |
| | async def save_workflow(request): |
| | json_data = await request.json() |
| | file = os.path.abspath(os.path.join( |
| | workflows_directory, json_data["name"] + ".json")) |
| | if os.path.commonpath([file, workflows_directory]) != workflows_directory: |
| | return web.Response(status=403) |
| |
|
| | if os.path.exists(file) and ("overwrite" not in json_data or json_data["overwrite"] == False): |
| | return web.Response(status=409) |
| |
|
| | sub_path = os.path.dirname(file) |
| | if not os.path.exists(sub_path): |
| | os.makedirs(sub_path) |
| |
|
| | with open(file, "w") as f: |
| | f.write(json.dumps(json_data["workflow"])) |
| |
|
| | return web.Response(status=201) |
| |
|