Version 7.8.1¶
Patch release: makes project-exported BUML files load again in the
Web Modeling Editor. v7.8.0’s project import flow rejected
model.py files that embed a Project(...) wrapper around a flat
domain-model block, returning a “Could not parse BUML file” error or,
worse, silently importing an empty diagram. No metamodel, generator,
or API contract changes — backend-only.
Fixes¶
``parse_buml_content`` sandbox missing ``Project``: the class diagram converter’s
exec()sandbox inbesser/utilities/web_modeling_editor/backend/services/converters/buml_to_json/class_diagram_converter.pystripsimportandfromstatements before execution and injects the metamodel symbols it needs.Projectwas never in that injection list, so any file whose tail looked likeproject = Project(name=..., models=[domain_model], ...)failed withNameError: name 'Project' is not definedbefore theDomainModelcould be lifted out. A no-opProjectstub is now provided in the sandbox so trailing project definitions parse harmlessly.``project_to_json`` ignored flat project files: the project converter at
besser/utilities/web_modeling_editor/backend/services/converters/buml_to_json/project_converter.pyonly scans for# STRUCTURAL MODEL #(and the numbered/titled variants) as section anchors. Files exported with the older flat layout (# Classes,# Relationships,# Generalizations,# Domain Model, then# PROJECT DEFINITION #) hitmodels=[...]but produced zero extracted sections, leaving every diagram empty. When section extraction yields nothing,project_to_jsonnow falls back to_build_project_from_single_diagramagainst the full content and restores the projectname,description, andownerfrom theProject(...)wrapper.``/get-json-model`` read the wrong project shape: the project branch in
besser/utilities/web_modeling_editor/backend/routers/conversion_router.pystill looked for the legacy flat shape (parsed_project["ClassDiagram"]) instead of theschemaVersion=3nested shape (parsed_project["diagrams"]["ClassDiagram"][i]). Even afterproject_to_jsonstarted returning populated diagrams, the endpoint surfacedNoneand raised “Could not parse BUML file.” The branch now honourscurrentDiagramTypeandcurrentDiagramIndices, falling through the legacy priority order if the active diagram is empty.
A regression test
(test_project_to_json_handles_missing_section_headers) in
tests/utilities/web_modeling_editor/backend/services/converters/test_project_single_diagram_fallback.py
guards the section-header-less project case end-to-end.