Path:
strictdoc/features/traceability_matrix/view_object.py
Lines:
68
Non-empty lines:
57
Non-empty lines covered with requirements:
57 / 57 (100.0%)
Functions:
8
Functions covered by requirements:
8 / 8 (100.0%)
1
"""2
@relation(SDOC-SRS-112, scope=file)3
"""4
5
from typing import Iterator, List, Optional, Tuple, Union
6
7
from markupsafe import Markup
8
9
from strictdoc import __version__
10
from strictdoc.backend.sdoc.models.anchor import Anchor
11
from strictdoc.backend.sdoc.models.document import SDocDocument
12
from strictdoc.backend.sdoc.models.node import SDocNode
13
from strictdoc.core.document_tree_iterator import DocumentTreeIterator
14
from strictdoc.core.project_config import ProjectConfig
15
from strictdoc.core.traceability_index import TraceabilityIndex
16
from strictdoc.export.html.html_templates import JinjaEnvironment
17
from strictdoc.export.html.renderers.link_renderer import LinkRenderer
18
from strictdoc.export.html.renderers.markup_renderer import MarkupRenderer
19
20
21
class TraceabilityMatrixViewObject:
22
def __init__(
23
self,
24
*,
25
traceability_index: TraceabilityIndex,
26
project_config: ProjectConfig,
27
link_renderer: LinkRenderer,
28
markup_renderer: MarkupRenderer,
29
known_relations_list: List[Tuple[str, Optional[str]]],
30
) -> None:
31
self.traceability_index: TraceabilityIndex = traceability_index
32
self.project_config: ProjectConfig = project_config
33
self.link_renderer: LinkRenderer = link_renderer
34
self.markup_renderer: MarkupRenderer = markup_renderer
35
self.known_relations_list: List[Tuple[str, Optional[str]]] = (
36
known_relations_list37
)38
self.document_tree_iterator: DocumentTreeIterator = (
39
DocumentTreeIterator(traceability_index.document_tree)
40
)41
self.is_running_on_server: bool = project_config.is_running_on_server
42
self.strictdoc_version = __version__
43
44
def iterate_documents(self) -> Iterator[SDocDocument]:
45
yield from filter(
46
lambda document_: not document_.document_is_included(),
47
self.traceability_index.document_tree.document_list,
48
)49
50
def render_screen(self, jinja_environment: JinjaEnvironment) -> Markup:
51
return jinja_environment.render_template_as_markup(
52
"features/traceability_matrix/index.jinja", view_object=self
53
)54
55
def render_static_url(self, url: str) -> str:
56
return self.link_renderer.render_static_url(url)
57
58
def render_url(self, url: str) -> str:
59
# FIXME: Return Markup(...).60
return self.link_renderer.render_url(url)
61
62
def render_local_anchor(
63
self, node: Union[Anchor, SDocNode, SDocDocument]
64
) -> str:
65
return self.link_renderer.render_local_anchor(node)
66
67
def get_document_level(self) -> int:
68
return 0