| | import os |
| | import json |
| | from aiohttp import web |
| | import logging |
| |
|
| |
|
| | class AppSettings(): |
| | def __init__(self, user_manager): |
| | self.user_manager = user_manager |
| |
|
| | def get_settings(self, request): |
| | file = self.user_manager.get_request_user_filepath( |
| | request, "comfy.settings.json") |
| | if os.path.isfile(file): |
| | try: |
| | with open(file) as f: |
| | return json.load(f) |
| | except: |
| | logging.error(f"The user settings file is corrupted: {file}") |
| | return {} |
| | else: |
| | return {} |
| |
|
| | def save_settings(self, request, settings): |
| | file = self.user_manager.get_request_user_filepath( |
| | request, "comfy.settings.json") |
| | with open(file, "w") as f: |
| | f.write(json.dumps(settings, indent=4)) |
| |
|
| | def add_routes(self, routes): |
| | @routes.get("/settings") |
| | async def get_settings(request): |
| | return web.json_response(self.get_settings(request)) |
| |
|
| | @routes.get("/settings/{id}") |
| | async def get_setting(request): |
| | value = None |
| | settings = self.get_settings(request) |
| | setting_id = request.match_info.get("id", None) |
| | if setting_id and setting_id in settings: |
| | value = settings[setting_id] |
| | return web.json_response(value) |
| |
|
| | @routes.post("/settings") |
| | async def post_settings(request): |
| | settings = self.get_settings(request) |
| | new_settings = await request.json() |
| | self.save_settings(request, {**settings, **new_settings}) |
| | return web.Response(status=200) |
| |
|
| | @routes.post("/settings/{id}") |
| | async def post_setting(request): |
| | setting_id = request.match_info.get("id", None) |
| | if not setting_id: |
| | return web.Response(status=400) |
| | settings = self.get_settings(request) |
| | settings[setting_id] = await request.json() |
| | self.save_settings(request, settings) |
| | return web.Response(status=200) |
| |
|