You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.9 KiB
54 lines
1.9 KiB
import os |
|
import json |
|
from aiohttp import web |
|
|
|
|
|
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): |
|
with open(file) as f: |
|
return json.load(f) |
|
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) |