Skip to content

Commit

Permalink
UI: Ensure that documents with HTML markup get rendered correctly whe…
Browse files Browse the repository at this point in the history
…n edited

Closes #1858
  • Loading branch information
stanislaw committed Jun 14, 2024
1 parent 124cad1 commit 8bebc49
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 28 deletions.
9 changes: 7 additions & 2 deletions strictdoc/backend/sdoc/models/document_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def __init__(
requirement_style: Optional[str],
requirement_in_toc: Optional[str],
default_view: Optional[str],
):
) -> None:
self.parent = parent
self.version: Optional[str] = version

Expand All @@ -61,7 +61,7 @@ def __init__(
else (False if root == "False" else None)
)

self.markup = markup
self.markup: Optional[str] = markup
self.auto_levels: bool = auto_levels is None or auto_levels == "On"

if layout is not None:
Expand All @@ -81,6 +81,11 @@ def __init__(
self.ng_line_start: int = 0
self.ng_col_start: int = 0

def get_markup(self) -> str:
if self.markup is None:
return "RST"
return self.markup

def get_requirement_style_mode(self) -> str:
if (
self.requirement_style is None
Expand Down
56 changes: 30 additions & 26 deletions strictdoc/server/routers/main_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ def requirement__show_full(reference_mid: str):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=requirement.document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -255,7 +255,7 @@ def section__show_full(reference_mid: str):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=section.document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -325,7 +325,7 @@ def get_new_section(
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -356,6 +356,7 @@ async def create_section(request: Request):
request_dict: Dict[str, str] = dict(request_form_data)
section_mid: str = request_dict["section_mid"]
reference_mid: str = request_dict["reference_mid"]
document_mid: str = request_dict["document_mid"]
context_document_mid: str = request_dict["context_document_mid"]
whereto: str = request_dict["whereto"]

Expand All @@ -367,6 +368,9 @@ async def create_section(request: Request):
request_form_data=request_form_data,
)

document = export_action.traceability_index.get_node_by_mid(
MID(document_mid)
)
context_document = export_action.traceability_index.get_node_by_mid(
MID(context_document_mid)
)
Expand All @@ -392,7 +396,7 @@ async def create_section(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -432,7 +436,7 @@ async def create_section(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -487,7 +491,7 @@ def get_edit_section(node_id: str, context_document_mid: str):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=section.document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -548,7 +552,7 @@ async def put_update_section(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=section.document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -598,7 +602,7 @@ async def put_update_section(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=section.document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -657,7 +661,7 @@ def cancel_edit_section(section_mid: str):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=section.document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -752,7 +756,7 @@ def get_new_requirement(
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -823,7 +827,7 @@ def get_clone_requirement(reference_mid: str, context_document_mid: str):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -912,7 +916,7 @@ async def create_requirement(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -958,7 +962,7 @@ async def create_requirement(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -1009,7 +1013,7 @@ def get_edit_requirement(node_id: str, context_document_mid: str):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -1146,7 +1150,7 @@ async def document__update_requirement(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -1193,7 +1197,7 @@ async def document__update_requirement(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer: MarkupRenderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -1258,7 +1262,7 @@ def cancel_edit_requirement(requirement_mid: str):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -1369,7 +1373,7 @@ def delete_section(
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=section.document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -1472,7 +1476,7 @@ def delete_requirement(
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=requirement.document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -1572,7 +1576,7 @@ async def move_node(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=moved_node.document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -1977,7 +1981,7 @@ async def document__save_edit_config(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -2061,7 +2065,7 @@ async def document__save_included_document(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -2097,7 +2101,7 @@ def document__cancel_edit_config(document_mid: str):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -2141,7 +2145,7 @@ def document__cancel_edit_included_document(document_mid: str):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -2249,7 +2253,7 @@ async def document__save_grammar(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down Expand Up @@ -2390,7 +2394,7 @@ async def document__save_grammar_element(request: Request):
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
markup="RST",
markup=document.config.get_markup(),
traceability_index=export_action.traceability_index,
link_renderer=link_renderer,
html_templates=html_generator.html_templates,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[DOCUMENT]
TITLE: Document 1
OPTIONS:
MARKUP: HTML

[REQUIREMENT]
TITLE: Requirement title
STATEMENT: >>>
UPDATED: <b>This <a href="#">text</a> will be rendered directly as HTML!</b>. UPDATED.
<<<
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[DOCUMENT]
TITLE: Document 1
OPTIONS:
MARKUP: HTML

[REQUIREMENT]
TITLE: Requirement title
STATEMENT: >>>
<b>This <a href="#">text</a> will be rendered directly as HTML!</b>
<<<
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
from tests.end2end.e2e_case import E2ECase
from tests.end2end.end2end_test_setup import End2EndTestSetup
from tests.end2end.helpers.screens.document.form_edit_requirement import (
Form_EditRequirement,
)
from tests.end2end.helpers.screens.project_index.screen_project_index import (
Screen_ProjectIndex,
)
from tests.end2end.server import SDocTestServer


class Test(E2ECase):
def test(self):
test_setup = End2EndTestSetup(path_to_test_file=__file__)

with SDocTestServer(
input_path=test_setup.path_to_sandbox
) as test_server:
self.open(test_server.get_host_and_port())

screen_project_index = Screen_ProjectIndex(self)

screen_project_index.assert_on_screen()
screen_project_index.assert_contains_document("Document 1")

screen_document = screen_project_index.do_click_on_first_document()

screen_document.assert_on_screen_document()
screen_document.assert_header_document_title("Document 1")

requirement = screen_document.get_requirement()

requirement.assert_requirement_statement_contains(
"This text will be rendered directly as HTML!"
)

"""
ACT
"""
form_edit_requirement: Form_EditRequirement = (
requirement.do_open_form_edit_requirement()
)
form_edit_requirement.do_fill_in_field_statement(
"UPDATED: "
'<b>This <a href="#">text</a> will be rendered directly as HTML!</b>. '
"UPDATED."
)
form_edit_requirement.do_form_submit()

"""
ASSERT
"""
requirement.assert_requirement_statement_contains(
"UPDATED: "
"This text will be rendered directly as HTML!. "
"UPDATED."
)

assert test_setup.compare_sandbox_and_expected_output()

0 comments on commit 8bebc49

Please sign in to comment.