diff --git a/tutordash/server/app.py b/tutordash/server/app.py index 61665ab..99d1419 100644 --- a/tutordash/server/app.py +++ b/tutordash/server/app.py @@ -51,12 +51,14 @@ async def home() -> str: @app.get("/plugin/store") async def plugin_store() -> str: + installed_plugins = tutorclient.Client.installed_plugins() plugins: list[dict[str, str]] = [ { "name": p.name, "url": p.url, "index": p.index, "description": markdown(p.description), + "is_installed": p.name in installed_plugins, } for p in tutorclient.Client.plugins_in_store() ] @@ -84,7 +86,7 @@ async def plugin(name: str) -> str: @app.post("/plugin//toggle") -async def toggle_plugin(name: str) -> WerkzeugResponse: +async def plugin_toggle(name: str) -> WerkzeugResponse: # TODO check plugin exists form = await request.form enable_plugin = form.get("enabled") == "on" @@ -94,6 +96,22 @@ async def toggle_plugin(name: str) -> WerkzeugResponse: return redirect(url_for("plugin", name=name)) +@app.post("/plugin//install") +async def plugin_install(name: str) -> WerkzeugResponse: + tutorclient.CliPool.run_parallel(app, ["plugins", "install", name]) + return redirect(url_for("cli_logs")) + + +@app.post("/plugin//upgrade") +async def plugin_upgrade(name: str) -> WerkzeugResponse: + tutorclient.CliPool.run_parallel(app, ["plugins", "upgrade", name]) + return redirect(url_for("cli_logs")) + +@app.post("/plugins/update") +async def plugins_update() -> WerkzeugResponse: + tutorclient.CliPool.run_parallel(app, ["plugins", "update"]) + return redirect(url_for("cli_logs")) + @app.post("/config//set") async def config_set(name: str) -> WerkzeugResponse: form = await request.form diff --git a/tutordash/server/templates/plugin.html b/tutordash/server/templates/plugin.html index 974557f..acb5a7c 100644 --- a/tutordash/server/templates/plugin.html +++ b/tutordash/server/templates/plugin.html @@ -3,7 +3,7 @@ {% block workspace_header %}{{ plugin_name }}{% endblock %} {% block workspace_content %} -Enabled:
+Enabled:
diff --git a/tutordash/server/templates/plugin_store.html b/tutordash/server/templates/plugin_store.html index d6e2f3d..5365984 100644 --- a/tutordash/server/templates/plugin_store.html +++ b/tutordash/server/templates/plugin_store.html @@ -3,8 +3,17 @@ {% block workspace_header %}Plugin store{% endblock %} {% block workspace_content %} +
+ +
+ {% for plugin in plugins %}

{{ plugin.name }}

+{% if plugin.is_installed %} +

Installed: ✅

+{% else %} +

+{% endif %}

{{ plugin.description|safe }}