Add server-rendered 1C form editor
CI / python (push) Has been cancelled
CI / rust (push) Has been cancelled

This commit is contained in:
2026-05-17 19:00:02 +03:00
parent 35dd134ebc
commit 02aa084634
6 changed files with 368 additions and 3 deletions
@@ -42,6 +42,10 @@ from api_server.html5_forms import (
html5_metadata_payload as _html5_metadata_payload,
html5_metadata_request_payload as _html5_metadata_request_payload,
)
from api_server.form_editor_service import (
form_module_for_form as _form_module_for_form,
select_form_semantics as _select_form_semantics,
)
from api_server.html5_projects import render_html5_index, render_html5_project_rows
from api_server.html5_responses import (
Html5StaticFiles,
@@ -76,6 +80,7 @@ from api_server.html5_editor import (
render_html5_symbol_detail,
render_html5_symbols,
)
from api_server.html5_form_editor import render_html5_form_editor
from api_server.html5_operations import (
filter_html5_operation_jobs,
latest_html5_import_job,
@@ -1730,6 +1735,32 @@ async def html5_project_editor(project_id: str, q: str = "") -> Response:
return _html5_response(html)
@app.get("/html5/projects/{project_id}/forms/editor")
async def html5_project_form_editor(project_id: str, form: str | None = None) -> Response:
try:
snapshot = _project_snapshot_or_404(project_id)
forms = [_form_semantics_response(item) for item in form_semantics(snapshot)]
selected = _select_form_semantics(forms, form)
form_module = _form_module_for_form(snapshot, selected.form if selected is not None else None)
html = render_html5_form_editor(
project_id=project_id,
projects=_project_summaries(),
snapshot=snapshot,
forms=forms,
selected_form_id=form,
form_module=form_module,
)
except HTTPException as error:
html = render_html5_form_editor(
project_id=project_id,
projects=_project_summaries(),
snapshot=None,
forms=[],
error=str(error.detail),
)
return _html5_response(html)
@app.get("/html5/projects/{project_id}/events")
async def html5_project_events(project_id: str, once: bool = False) -> StreamingResponse:
async def stream_status():