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
10 months ago
|
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)
|