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:
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 }}