StrictDoc Documentation
strictdoc/features/diff_and_changelog/diff_screen_view_object.py
Source file coverage
Path:
strictdoc/features/diff_and_changelog/diff_screen_view_object.py
Lines:
74
Non-empty lines:
61
Non-empty lines covered with requirements:
61 / 61 (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 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
@dataclass
18
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
        self.error_message: Optional[str] = error_message
34
        self.tab: str = tab
35
 
36
        link_renderer = LinkRenderer(
37
            root_path="", static_path=project_config.dir_for_sdoc_assets
38
        )
39
        self.link_renderer: LinkRenderer = link_renderer
40
        self.is_running_on_server: bool = project_config.is_running_on_server
41
        self.strictdoc_version = __version__
42
 
43
    def get_document_level(self) -> int:
44
        return 0
45
 
46
    @property
47
    def left_revision_urlencoded(self) -> str:
48
        return (
49
            urllib.parse.quote(self.left_revision)
50
            if self.left_revision is not None
51
            else ""
52
        )
53
 
54
    @property
55
    def right_revision_urlencoded(self) -> str:
56
        return (
57
            urllib.parse.quote(self.right_revision)
58
            if self.right_revision is not None
59
            else ""
60
        )
61
 
62
    def render_screen(self, jinja_environment: JinjaEnvironment) -> Markup:
63
        return jinja_environment.render_template_as_markup(
64
            "features/diff_and_changelog/index.jinja", view_object=self
65
        )
66
 
67
    def render_url(self, url: str) -> Markup:
68
        return Markup(self.link_renderer.render_url(url))
69
 
70
    def render_static_url(self, url: str) -> Markup:
71
        return Markup(self.link_renderer.render_static_url(url))
72
 
73
    def render_static_url_with_prefix(self, url: str) -> str:
74
        return self.link_renderer.render_static_url_with_prefix(url)