Passed
Pull Request — master (#149)
by Jan
03:48
created

oval_graph._builder_html_report   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Test Coverage

Coverage 40%

Importance

Changes 0
Metric Value
eloc 34
dl 0
loc 42
ccs 10
cts 25
cp 0.4
rs 10
c 0
b 0
f 0
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A BuilderHtmlReport.__init__() 0 9 1
A BuilderHtmlReport._get_html_object() 0 3 1
A BuilderHtmlReport._get_html() 0 13 1
A BuilderHtmlReport.save_report() 0 4 2
1 1
import lxml.html
2 1
from lxml import etree
3 1
from lxml.builder import ElementMaker, E
4 1
import os
5 1
from io import BytesIO
6
7
8 1
class BuilderHtmlReport():
9
10 1
    def __init__(self, display_html, xml_parser, arf_file_src):
11
        self.display_html = display_html
12
        self.arf_file_src = arf_file_src
13
        self.src_xsl = xml_parser.get_src("xsl/xccdf-report.xsl")
14
        self.xslt_doc = etree.parse(self.src_xsl)
15
        self.xslt_transformer = etree.XSLT(self.xslt_doc)
16
17
        self.source_doc = etree.parse(self.arf_file_src)
18
        self.output_doc = self.xslt_transformer(self.source_doc)
19
20 1
    def _get_html_object(self):
21
        html_object = lxml.html.fromstring(str(self.output_doc))
22
        return html_object
23
24 1
    def _get_html(self):
25
        html_object = self._get_html_object()
26
        result = etree.tostring(
27
            html_object,
28
            xml_declaration=True,
29
            doctype=('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"'
30
                     ' "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'),
31
            encoding='utf-8',
32
            standalone=False,
33
            with_tail=False,
34
            method='html',
35
            pretty_print=True)
36
        return BytesIO(result)
37
38 1
    def save_report(self, save_src):
39
        with open(save_src, 'wb+') as data_file:
40
            data_file.writelines(self._get_html())
41
        return [save_src]
42