Path:
strictdoc/features/diff_and_changelog/diff_screen_view_object.py
Lines:
78
Non-empty lines:
65
Non-empty lines covered with requirements:
65 / 65 (100.0%)
Functions:
9
Functions covered by requirements:
9 / 9 (100.0%)
1
"""2
@relation(SDOC-SRS-111, scope=file)3
"""4
5
import urllib
6
from dataclasses import dataclass
7
from typing import List, Optional
8
9
from markupsafe import Markup
10
11
from strictdoc import __version__
12
from strictdoc.core.project_config import ProjectConfig
13
from strictdoc.export.html.html_templates import JinjaEnvironment
14
from strictdoc.export.html.renderers.link_renderer import LinkRenderer
15
16
17
@dataclass18
class DiffScreenViewObject:
19
def __init__(
20
self,
21
*,
22
project_config: ProjectConfig,
23
results: bool,
24
left_revision: Optional[str],
25
right_revision: Optional[str],
26
error_message: Optional[str],
27
tab: str,
28
):29
self.project_config: ProjectConfig = project_config
30
self.results: bool = results
31
self.left_revision: Optional[str] = left_revision
32
self.right_revision: Optional[str] = right_revision
33
# This screen (no results yet) never resolves tags, but form.jinja is34
# shared with DiffScreenResultsViewObject, so these must exist too.35
self.left_revision_tags: List[str] = []
36
self.right_revision_tags: List[str] = []
37
self.error_message: Optional[str] = error_message
38
self.tab: str = tab
39
40
link_renderer = LinkRenderer(
41
root_path="", static_path=project_config.dir_for_sdoc_assets
42
)43
self.link_renderer: LinkRenderer = link_renderer
44
self.is_running_on_server: bool = project_config.is_running_on_server
45
self.strictdoc_version = __version__
46
47
def get_document_level(self) -> int:
48
return 0
49
50
@property51
def left_revision_urlencoded(self) -> str:
52
return (
53
urllib.parse.quote(self.left_revision)
54
if self.left_revision is not None
55
else ""
56
)57
58
@property59
def right_revision_urlencoded(self) -> str:
60
return (
61
urllib.parse.quote(self.right_revision)
62
if self.right_revision is not None
63
else ""
64
)65
66
def render_screen(self, jinja_environment: JinjaEnvironment) -> Markup:
67
return jinja_environment.render_template_as_markup(
68
"features/diff_and_changelog/index.jinja", view_object=self
69
)70
71
def render_url(self, url: str) -> Markup:
72
return Markup(self.link_renderer.render_url(url))
73
74
def render_static_url(self, url: str) -> Markup:
75
return Markup(self.link_renderer.render_static_url(url))
76
77
def render_static_url_with_prefix(self, url: str) -> str:
78
return self.link_renderer.render_static_url_with_prefix(url)