StrictDoc Documentation
strictdoc/export/html/form_objects/rows/row_with_grammar_element_form_object.py
Source file coverage
Path:
strictdoc/export/html/form_objects/rows/row_with_grammar_element_form_object.py
Lines:
40
Non-empty lines:
32
Non-empty lines covered with requirements:
32 / 32 (100.0%)
Functions:
4
Functions covered by requirements:
4 / 4 (100.0%)
1
"""
2
@relation(SDOC-SRS-56, scope=file)
3
"""
4
 
5
from dataclasses import dataclass
6
from typing import Any, Dict, List
7
 
8
from markupsafe import Markup
9
 
10
from strictdoc.export.html.html_templates import JinjaEnvironment
11
 
12
 
13
@dataclass
14
class RowWithGrammarElementFormObject:
15
    field: Any
16
    errors: Dict[str, List[str]]
17
    jinja_environment: JinjaEnvironment
18
 
19
    def __post_init__(self) -> None:
20
        assert self.field is not None
21
        assert isinstance(self.jinja_environment, JinjaEnvironment), (
22
            self.jinja_environment
23
        )
24
 
25
    def render(self) -> Markup:
26
        if self.field.is_new:
27
            rendered_template = self.jinja_environment.render_template_as_markup(
28
                "components/grammar_form/row_with_new_grammar_element/index.jinja",
29
                form_object=self,
30
            )
31
            return rendered_template
32
        else:
33
            rendered_template = self.jinja_environment.render_template_as_markup(
34
                "components/grammar_form/row_with_grammar_element/index.jinja",
35
                form_object=self,
36
            )
37
            return rendered_template
38
 
39
    def get_errors(self, field_name: str) -> List[str]:
40
        return self.errors.get(field_name, [])