From d52f9b9543b3ad03dc4f1ca24955516011e1ec82 Mon Sep 17 00:00:00 2001 From: Junyan Qin <1010553892@qq.com> Date: Tue, 15 Oct 2024 14:23:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(settings):=20json=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/api/http/controller/group.py | 5 -- pkg/api/http/controller/groups/settings.py | 9 ++ pkg/api/http/controller/main.py | 2 + pkg/core/bootutils/deps.py | 1 + requirements.txt | 3 +- web/package-lock.json | 7 ++ web/package.json | 1 + web/src/pages/Settings.vue | 97 ++++++++++++++++++++-- web/src/store/index.js | 1 + 9 files changed, 113 insertions(+), 13 deletions(-) diff --git a/pkg/api/http/controller/group.py b/pkg/api/http/controller/group.py index 4f253e05..053ba1cd 100644 --- a/pkg/api/http/controller/group.py +++ b/pkg/api/http/controller/group.py @@ -63,11 +63,6 @@ class RouterGroup(abc.ABC): return decorator def _cors(self, response: quart.Response) -> quart.Response: - # Quart-Cors 似乎很久没维护了,所以自己写 - response.headers['Access-Control-Allow-Origin'] = '*' - response.headers['Access-Control-Allow-Headers'] = '*' - response.headers['Access-Control-Allow-Methods'] = '*' - response.headers['Access-Control-Allow-Credentials'] = 'true' return response def success(self, data: typing.Any = None) -> quart.Response: diff --git a/pkg/api/http/controller/groups/settings.py b/pkg/api/http/controller/groups/settings.py index 15a145d2..72f41d97 100644 --- a/pkg/api/http/controller/groups/settings.py +++ b/pkg/api/http/controller/groups/settings.py @@ -39,3 +39,12 @@ class SettingsRouterGroup(group.RouterGroup): } } ) + + @self.route('//data', methods=['PUT']) + async def _(manager_name: str) -> str: + data = await quart.request.json + manager = self.ap.settings_mgr.get_manager(manager_name) + manager.data = data['data'] + return self.success(data={ + "data": manager.data + }) diff --git a/pkg/api/http/controller/main.py b/pkg/api/http/controller/main.py index ac82a98e..17b15192 100644 --- a/pkg/api/http/controller/main.py +++ b/pkg/api/http/controller/main.py @@ -3,6 +3,7 @@ from __future__ import annotations import asyncio import quart +import quart_cors from ....core import app from .groups import logs, system, settings @@ -18,6 +19,7 @@ class HTTPController: def __init__(self, ap: app.Application) -> None: self.ap = ap self.quart_app = quart.Quart(__name__) + quart_cors.cors(self.quart_app, allow_origin='*') async def initialize(self) -> None: await self.register_routes() diff --git a/pkg/core/bootutils/deps.py b/pkg/core/bootutils/deps.py index 8c0127e5..69dfe138 100644 --- a/pkg/core/bootutils/deps.py +++ b/pkg/core/bootutils/deps.py @@ -16,6 +16,7 @@ required_deps = { "async_lru": "async-lru", "ollama": "ollama", "quart": "quart", + "quart_cors": "quart-cors", "sqlalchemy": "sqlalchemy[asyncio]", "aiosqlite": "aiosqlite", } diff --git a/requirements.txt b/requirements.txt index f001e6af..389f172f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,4 +17,5 @@ async-lru ollama quart sqlalchemy[asyncio] -aiosqlite \ No newline at end of file +aiosqlite +quart-cors \ No newline at end of file diff --git a/web/package-lock.json b/web/package-lock.json index d60c5734..9067fd2b 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@mdi/font": "7.4.47", "axios": "^1.7.7", + "codemirror": "^5.65.18", "core-js": "^3.37.1", "roboto-fontface": "*", "vue": "^3.4.31", @@ -1466,6 +1467,12 @@ "node": ">= 6" } }, + "node_modules/codemirror": { + "version": "5.65.18", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.18.tgz", + "integrity": "sha512-Gaz4gHnkbHMGgahNt3CA5HBk5lLQBqmD/pBgeB4kQU6OedZmqMBjlRF0LSrp2tJ4wlLNPm2FfaUd1pDy0mdlpA==", + "license": "MIT" + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", diff --git a/web/package.json b/web/package.json index b24ede85..8f961de1 100644 --- a/web/package.json +++ b/web/package.json @@ -10,6 +10,7 @@ "dependencies": { "@mdi/font": "7.4.47", "axios": "^1.7.7", + "codemirror": "^5.65.18", "core-js": "^3.37.1", "roboto-fontface": "*", "vue": "^3.4.31", diff --git a/web/src/pages/Settings.vue b/web/src/pages/Settings.vue index 67d15856..16ceaab8 100644 --- a/web/src/pages/Settings.vue +++ b/web/src/pages/Settings.vue @@ -2,11 +2,16 @@ - - {{ manager.name }} + + + + - - + @@ -24,7 +29,22 @@ + +
+ 重置 + 应用 +
+
+ +
+ +
+ + +