Skip to content

Commit

Permalink
Merge pull request #1872 from strictdoc-project/stanislaw/html_markup…
Browse files Browse the repository at this point in the history
…_tweak

UI: Ensure that documents with HTML markup get rendered correctly when edited
  • Loading branch information
stanislaw committed Jun 14, 2024
2 parents 16a70d9 + 0b86468 commit d98aa77
Show file tree
Hide file tree
Showing 5 changed files with 120 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
60 changes: 34 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 @@ -366,6 +366,14 @@ async def create_section(request: Request):
section_mid=section_mid,
request_form_data=request_form_data,
)
reference_node: Union[SDocDocument, SDocSection] = (
export_action.traceability_index.get_node_by_mid(MID(reference_mid))
)
document = (
reference_node
if isinstance(reference_node, SDocDocument)
else reference_node.document
)

context_document = export_action.traceability_index.get_node_by_mid(
MID(context_document_mid)
Expand All @@ -392,7 +400,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 +440,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 +495,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 +556,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 +606,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 +665,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 +760,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 +831,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 +920,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 +966,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 +1017,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 +1154,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 +1201,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 +1266,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 +1377,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 +1480,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 +1580,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 +1985,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 +2069,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 +2105,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 +2149,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 +2257,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 +2398,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 d98aa77

Please sign in to comment.