diff --git a/services/api-server/src/api_server/html5.py b/services/api-server/src/api_server/html5.py
index 3fe1ed1..941dfdc 100644
--- a/services/api-server/src/api_server/html5.py
+++ b/services/api-server/src/api_server/html5.py
@@ -10,9 +10,6 @@ from sir import NodeKind, SirSnapshot
def render_html5_index(projects: Iterable[object]) -> str:
project_list = list(projects)
- project_rows = "\n".join(_project_row(project) for project in project_list)
- if not project_rows:
- project_rows = '
| Проекты пока не настроены |
'
return _page(
"SFERA HTML5",
f"""
@@ -33,12 +30,13 @@ def render_html5_index(projects: Iterable[object]) -> str:
Проекты
API docs
+ {render_html5_project_create_form()}
| Проект | Статус | Snapshot | |
- {project_rows}
+ {render_html5_project_rows(project_list)}
@@ -47,6 +45,31 @@ def render_html5_index(projects: Iterable[object]) -> str:
)
+def render_html5_project_create_form() -> str:
+ return """
+
+ """
+
+
+def render_html5_project_rows(projects: Iterable[object]) -> str:
+ project_rows = "\n".join(_project_row(project) for project in projects)
+ if not project_rows:
+ return '| Проекты пока не настроены |
'
+ return project_rows
+
+
def render_html5_editor(
*,
project_id: str,
diff --git a/services/api-server/src/api_server/main.py b/services/api-server/src/api_server/main.py
index 3c82d87..e8e2033 100644
--- a/services/api-server/src/api_server/main.py
+++ b/services/api-server/src/api_server/main.py
@@ -39,6 +39,7 @@ from api_server.html5 import (
render_html5_editor,
render_html5_index,
render_html5_project_setup,
+ render_html5_project_rows,
render_html5_setup_summary,
render_html5_source,
render_html5_status,
@@ -1584,6 +1585,19 @@ async def html5_index() -> Response:
)
+@app.post("/html5/projects")
+async def html5_create_project(request: Request) -> Response:
+ form = await _html5_form_data(request)
+ project_id = _form_value(form, "project_id")
+ if not project_id:
+ raise HTTPException(status_code=400, detail="project_id is required.")
+ await create_project(ProjectCreateRequest(project_id=project_id, name=_form_value(form, "name")))
+ return Response(
+ render_html5_project_rows(_project_summaries()),
+ media_type="text/html; charset=utf-8",
+ )
+
+
@app.get("/html5/projects/{project_id}/editor")
async def html5_project_editor(project_id: str, q: str = "") -> Response:
try:
diff --git a/services/api-server/tests/test_api.py b/services/api-server/tests/test_api.py
index 05cf519..a109423 100644
--- a/services/api-server/tests/test_api.py
+++ b/services/api-server/tests/test_api.py
@@ -142,6 +142,29 @@ def test_html5_server_rendered_project_editor(tmp_path: Path):
assert "